Skip to content

Coordinator cannot load mysql and postgres extensions for sql ingest #11733

Open
@kevin-fibich

Description

@kevin-fibich

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)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions