WL#4102: Service registry and component infrastructure

Affects: Server-8.0   —   Status: Complete

This worklog will provide new infrastructure needed for improving the extensibility of the MySQL Server, and address issues with the current plugin mechanisms.

It allows the MySQL server to be divided into a number of logical components. Additional components may be added to a running server to extend its functionality.

Components can be linked either dynamically or statically.

Each component will provide an extensive set of named APIs, services, that other components can consume. To facilitate this there will be a registry of all services available to all components.

Each component will communicate with other components only through services and will explicitly state the services it provides and consumes.

The infrastructure will enable components to override and complement other components through re-implementing the relevant service APIs.

Once there's a critical mass of such components exposing their functionality and consuming the services they need through named service APIs this will allow additional loadable components to take dvantage of all the functionality they need without having to carve in specialized APIs for each new need.

The work of providing the infrastructure described in this WL, is mostly orthogonal to the ongoing activity on modularizing the MySQL Server. However, properly defined modules and interfaces in the Server, allows server functionality to easily be exposed as services where it makes sense.