mirror of https://github.com/apache/druid.git
5712b29c8c
The way the Guice bindings were setup previously, each process only had bindings for the things it cared about. This became problematic when adding extension modules that bound everything that they could possibly need expecting that the processes would only instantiate what they actually do need. Guice tries to fail-fast and verifies that all bindings exist before it does anything, which is a problem because the extension bind some objects that don't necessarily have all of their dependencies bound in all processes. The fix for this is to build a single Injector with all bindings in it and let each of the processes only load the things that they care about. This also requires the use of Module overrides and other such interesting things, which are node done. In doing the fix, I also swapped out the way that the DataSegmentPusher/Puller stuff is bound, as well as made the Cassandra stuff fail if its settings are not provided. This all of a sudden made all of the things require Cassandra's settings, so I migrated the Cassandra deep storage stuff into its own module. In doing these changes, I also discovered that some properties weren't properly converting for the ConvertProperties command (specifically, the properties related to data segment loading and pushing), so I fixed that. |
||
---|---|---|
.. | ||
src | ||
pom.xml |