WL#10799: integrate MySQL Router into MySQL Server repository

Affects: Server-8.0   —   Status: Complete   —   Priority: Medium

Motivation

As part of the MySQL InnoDB Cluster the MySQL Router becomes a integral part of the MySQL Server environment.

To simplify

  • code reuse
  • testing
  • detect incompatible changes early
  • ...

the router should be close to the MySQL Server in source.

On the other side, the integration shouldn't result in lower build times in continuous integration systems.

Goals

Integration to "all"

  1. "make all" should include MySQL Router
  2. running the test-suite via "make" should run the MySQL Router tests too

Independent builds and packaging

  1. there must be a way to build MySQL Router without building the while MySQL Server to keep build-times in CIs low.
  2. the router packages should be able to be built without building the server packages to allow independent testing in CIs.

Merge Criteria

Before the router's 'master' tree can be push into the server tree it:

C1
MUST have code coverage above 80%
C2
MUST build and pass tests with MySQL Server 8.0
C3
MUST build clean with Sun Studio
C4
MUST align the use of 3rd party dependencies with the server (protobuf, gmock, gtest, ...)
C5
MUST have zero unapproved bugs
C6
MUST got security review
C7
MUST got QA sign off
C8
MUST be -Werror, ASAN, UBSAN, valgrind clean
C9
MUST got Cmake files reviewed
C10
MUST build packages (tar, deb, rpm, msi)
C11
MUST be integrated with the windows installer.

Process Requirements

P1
MUST unify the code-style with the google coding style guide-lines.
P2
MUST have all major refactoring branches merged

Non-Goals

N1
packaging and distribution of the Router SHALL NOT change.

Directory Layout

The router source will be located in:

router/

bundled 3rd party dependencies

Router uses:

  • protobuf 3.0.0
  • rapidjson

These MUST be removed and the server's ext/ folder must be used instead.

Dependent Work

Source Tree Integration

Packaging