Description
Affected Version
0.21.1
but everything up to master seems affected
Description
mysql and postgres sql ingest require the corresponding metadata extensions to be loaded, which results in an error because both modules are extenting SQLMetadataStorageDruidModule and calling its configure function which includes:
JsonConfigProvider.bind(binder, "druid.audit.manager", SQLAuditManagerConfig.class);
Since this bind can only be called once, the second metadata extension loaded encounters an exception at this point and fails to load, which in turn makes the sql ingestion / firehose module of that extension not load.
Steps to reproduce
put
druid.extensions.loadList=["postgres-metadata-storage","mysql-metadata-storage"]
in your config and start coordinator.
Stacktrace
Exception in thread "main" java.lang.RuntimeException: com.google.inject.CreationException: Unable to create injector, see the following errors:
coordinator |
coordinator | 1) A binding to com.google.common.base.Supplier<org.apache.druid.server.audit.SQLAuditManagerConfig> was already configured at org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:151) (via modules: com.google.inject.util.Modules$OverrideModule -> org.apache.druid.metadata.storage.postgresql.PostgreSQLMetadataStorageModule).
coordinator | at org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:151) (via modules: com.google.inject.util.Modules$OverrideModule -> org.apache.druid.metadata.storage.mysql.MySQLMetadataStorageModule)
coordinator |
coordinator | 2) A binding to org.apache.druid.server.audit.SQLAuditManagerConfig was already configured at org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:152) (via modules: com.google.inject.util.Modules$OverrideModule -> org.apache.druid.metadata.storage.postgresql.PostgreSQLMetadataStorageModule).
coordinator | at org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:152) (via modules: com.google.inject.util.Modules$OverrideModule -> org.apache.druid.metadata.storage.mysql.MySQLMetadataStorageModule)