The plugin registry connects configurations, stored in ZK, with implementations, which are Java classes. The registry handles a large number of tasks including:
- Populating "bootstrap" plugin configurations and handling upgrades.
- Reading from, and writing to, the persistent store in ZK.
- Handling "normal" (configured) plugins and special system plugins (which have no configuration.)
- Handle format plugins which are always associated with the DFS storage plugin.
- And so on.
The code has grown overly complex. As we look to add a new, cleaner plugin mechanism, we will start by cleaning up what we have to allow the new mechanism to be one of many.