Hi Druid Team! We are experiencing a recurring pro...
# general
m
Hi Druid Team! We are experiencing a recurring problem with Apache Druid. The Coordinator is trying to create an index in PostgreSQL, but it already exists. When trying to do this, the Coordinator ends up going offline for a few minutes and then restarts. Could you help me solve this problem? I'm not sure if I can do a drop index without affecting the cluster, I searched but didn't find anyone with a similar problem. Apache Druid 30.0.0 Overlaod as Coodinator
Copy code
2025-01-09T14:16:43,512 ERROR [main] org.apache.druid.metadata.SQLMetadataConnector - Exception while creating index on table [druid_pendingSegments]
org.skife.jdbi.v2.exceptions.CallbackFailedException: org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException: org.postgresql.util.PSQLException: ERROR: relation "idx_druid_pendingsegments_datasource_task_allocator_id" already exists [statement:"CREATE INDEX idx_druid_pendingSegments_datasource_task_allocator_id ON druid_pendingSegments(dataSource,task_allocator_id)", located:"CREATE INDEX idx_druid_pendingSegments_datasource_task_allocator_id ON druid_pendingSegments(dataSource,task_allocator_id)", rewritten:"CREATE INDEX idx_druid_pendingSegments_datasource_task_allocator_id ON druid_pendingSegments(dataSource,task_allocator_id)", arguments:{ positional:{}, named:{}, finder:[]}]
    at org.skife.jdbi.v2.DBI.withHandle(DBI.java:284) ~[jdbi-2.63.1.jar:2.63.1]
    at org.apache.druid.metadata.SQLMetadataConnector.lambda$retryWithHandle$0(SQLMetadataConnector.java:157) ~[druid-server-30.0.0.jar:30.0.0]
    at org.apache.druid.java.util.common.RetryUtils.retry(RetryUtils.java:129) ~[druid-processing-30.0.0.jar:30.0.0]
    at org.apache.druid.java.util.common.RetryUtils.retry(RetryUtils.java:81) ~[druid-processing-30.0.0.jar:30.0.0]
    at org.apache.druid.java.util.common.RetryUtils.retry(RetryUtils.java:163) ~[druid-processing-30.0.0.jar:30.0.0]
    at org.apache.druid.java.util.common.RetryUtils.retry(RetryUtils.java:153) ~[druid-processing-30.0.0.jar:30.0.0]
    at org.apache.druid.metadata.SQLMetadataConnector.retryWithHandle(SQLMetadataConnector.java:157) ~[druid-server-30.0.0.jar:30.0.0]
    at org.apache.druid.metadata.SQLMetadataConnector.retryWithHandle(SQLMetadataConnector.java:167) ~[druid-server-30.0.0.jar:30.0.0]
    at org.apache.druid.metadata.SQLMetadataConnector.createIndex(SQLMetadataConnector.java:1092) [druid-server-30.0.0.jar:30.0.0]
    at org.apache.druid.metadata.SQLMetadataConnector.alterPendingSegmentsTable(SQLMetadataConnector.java:513) [druid-server-30.0.0.jar:30.0.0]
    at org.apache.druid.metadata.SQLMetadataConnector.createPendingSegmentsTable(SQLMetadataConnector.java:297) [druid-server-30.0.0.jar:30.0.0]
    at org.apache.druid.metadata.SQLMetadataConnector.createPendingSegmentsTable(SQLMetadataConnector.java:760) [druid-server-30.0.0.jar:30.0.0]
    at org.apache.druid.metadata.IndexerSQLMetadataStorageCoordinator.start(IndexerSQLMetadataStorageCoordinator.java:146) [druid-server-30.0.0.jar:30.0.0]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[?:?]
    at org.apache.druid.java.util.common.lifecycle.Lifecycle$AnnotationBasedHandler.start(Lifecycle.java:446) [druid-processing-30.0.0.jar:30.0.0]
    at org.apache.druid.java.util.common.lifecycle.Lifecycle.start(Lifecycle.java:341) [druid-processing-30.0.0.jar:30.0.0]
    at org.apache.druid.guice.LifecycleModule$2.start(LifecycleModule.java:152) [druid-processing-30.0.0.jar:30.0.0]
    at org.apache.druid.cli.GuiceRunnable.initLifecycle(GuiceRunnable.java:136) [druid-services-30.0.0.jar:30.0.0]
    at org.apache.druid.cli.GuiceRunnable.initLifecycle(GuiceRunnable.java:94) [druid-services-30.0.0.jar:30.0.0]
    at org.apache.druid.cli.ServerRunnable.run(ServerRunnable.java:70) [druid-services-30.0.0.jar:30.0.0]
    at org.apache.druid.cli.Main.main(Main.java:112) [druid-services-30.0.0.jar:30.0.0]
j
Hi Miguel, I think you can rename an index in Postgres ... if so, then I suggest try that, let the duplicate index be created by coordinator, then delete the old index if it is in fact a duplicate (or subset) and is not needed anymore.
m
I apologize for the delay in responding, I was on vacation, we were able to resolve this issue in another way by setting the following configuration, as in our case we already had the tables and indexes created based on Druid, we chose to remove this constant validation of checking tables and indexes through the configuration druid.metadata.storage.connector.createTables=false