This is an automated email from the ASF dual-hosted git repository.
gian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new b6a6c973ab6 Wait for SQL table visibility in embedded tests. (#19095)
b6a6c973ab6 is described below
commit b6a6c973ab63ce8a846b88a087eed6d2195d652c
Author: Gian Merlino <[email protected]>
AuthorDate: Thu Mar 5 12:16:04 2026 -0800
Wait for SQL table visibility in embedded tests. (#19095)
* Wait for SQL table visibility in embedded tests.
Several embedded tests wait for segment/schemaCache/refresh/count as a
proxy for when a datasource is queryable via SQL. However, this metric
is emitted before the SQL table is set up. This creates a window where
SQL queries can fail with "Object 'datasource' not found".
This patch waits for segment/schemaCache/rowSignature/column/count,
which is emitted after a SQL table is set up and visible. This is done
either as a replacement for segment/schemaCache/refresh/count (if we
only care about table visibility) or in addition to it (if we also want
to wait for a specific number of segments to be detected).
* Fix import order.
* Fix import order.
---
.../apache/druid/testing/embedded/indexing/IngestionSmokeTest.java | 6 ++++++
.../testing/embedded/indexing/StreamIndexDataFormatsTestBase.java | 3 ++-
.../druid/testing/embedded/msq/EmbeddedMSQRealtimeQueryTest.java | 3 ++-
.../testing/embedded/server/HttpEmitterEventCollectorTest.java | 6 ++++++
.../java/org/apache/druid/testing/embedded/EmbeddedClusterApis.java | 5 +++++
5 files changed, 21 insertions(+), 2 deletions(-)
diff --git
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/IngestionSmokeTest.java
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/IngestionSmokeTest.java
index fdc90cab49a..2c770e4828d 100644
---
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/IngestionSmokeTest.java
+++
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/IngestionSmokeTest.java
@@ -40,6 +40,7 @@ import org.apache.druid.java.util.common.StringUtils;
import
org.apache.druid.metadata.storage.postgresql.PostgreSQLMetadataStorageModule;
import org.apache.druid.query.DruidMetrics;
import org.apache.druid.query.http.SqlTaskStatus;
+import org.apache.druid.segment.metadata.Metric;
import org.apache.druid.tasklogs.TaskLogStreamer;
import org.apache.druid.testing.embedded.EmbeddedBroker;
import org.apache.druid.testing.embedded.EmbeddedCoordinator;
@@ -402,6 +403,11 @@ public class IngestionSmokeTest extends
EmbeddedClusterTestBase
.hasDimension(DruidMetrics.DATASOURCE, dataSource),
agg -> agg.hasSumAtLeast(numSegments)
);
+ eventCollector.latchableEmitter().waitForEvent(
+ event -> event.hasMetricName(Metric.SCHEMA_ROW_SIGNATURE_COLUMN_COUNT)
+ .hasService("druid/broker")
+ .hasDimension(DruidMetrics.DATASOURCE, dataSource)
+ );
}
/**
diff --git
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/StreamIndexDataFormatsTestBase.java
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/StreamIndexDataFormatsTestBase.java
index 0d28583f997..18d3f512374 100644
---
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/StreamIndexDataFormatsTestBase.java
+++
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/StreamIndexDataFormatsTestBase.java
@@ -45,6 +45,7 @@ import
org.apache.druid.data.input.protobuf.SchemaRegistryBasedProtobufBytesDeco
import org.apache.druid.indexing.overlord.supervisor.SupervisorSpec;
import org.apache.druid.java.util.common.parsers.JSONPathSpec;
import org.apache.druid.query.DruidMetrics;
+import org.apache.druid.segment.metadata.Metric;
import org.apache.druid.testing.embedded.EmbeddedBroker;
import org.apache.druid.testing.embedded.EmbeddedCoordinator;
import org.apache.druid.testing.embedded.EmbeddedDruidCluster;
@@ -552,7 +553,7 @@ public abstract class StreamIndexDataFormatsTestBase
extends EmbeddedClusterTest
);
// Wait for the schema cache to refresh for the datasource under test
broker.latchableEmitter().waitForEvent(
- event -> event.hasMetricName("segment/schemaCache/refresh/count")
+ event -> event.hasMetricName(Metric.SCHEMA_ROW_SIGNATURE_COLUMN_COUNT)
.hasDimension(DruidMetrics.DATASOURCE, dataSource)
);
diff --git
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/msq/EmbeddedMSQRealtimeQueryTest.java
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/msq/EmbeddedMSQRealtimeQueryTest.java
index 100570f604c..9031ac12705 100644
---
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/msq/EmbeddedMSQRealtimeQueryTest.java
+++
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/msq/EmbeddedMSQRealtimeQueryTest.java
@@ -26,6 +26,7 @@ import
org.apache.druid.msq.indexing.report.MSQTaskReportPayload;
import org.apache.druid.query.DruidMetrics;
import org.apache.druid.query.http.SqlTaskStatus;
import org.apache.druid.segment.TestIndex;
+import org.apache.druid.segment.metadata.Metric;
import org.apache.druid.sql.calcite.BaseCalciteQueryTest;
import org.apache.druid.testing.embedded.EmbeddedBroker;
import org.apache.druid.testing.embedded.EmbeddedClusterApis;
@@ -149,7 +150,7 @@ public class EmbeddedMSQRealtimeQueryTest extends
BaseRealtimeQueryTest
agg -> agg.hasSumAtLeast(totalRows)
);
broker.latchableEmitter().waitForEvent(
- event -> event.hasMetricName("segment/schemaCache/refresh/count")
+ event -> event.hasMetricName(Metric.SCHEMA_ROW_SIGNATURE_COLUMN_COUNT)
.hasDimension(DruidMetrics.DATASOURCE, dataSource)
);
}
diff --git
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/server/HttpEmitterEventCollectorTest.java
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/server/HttpEmitterEventCollectorTest.java
index 0437f45a2a6..6ed2aa7e161 100644
---
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/server/HttpEmitterEventCollectorTest.java
+++
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/server/HttpEmitterEventCollectorTest.java
@@ -22,6 +22,7 @@ package org.apache.druid.testing.embedded.server;
import org.apache.druid.common.utils.IdUtils;
import org.apache.druid.indexing.common.task.IndexTask;
import org.apache.druid.query.DruidMetrics;
+import org.apache.druid.segment.metadata.Metric;
import org.apache.druid.testing.embedded.EmbeddedBroker;
import org.apache.druid.testing.embedded.EmbeddedCoordinator;
import org.apache.druid.testing.embedded.EmbeddedDruidCluster;
@@ -89,6 +90,11 @@ public class HttpEmitterEventCollectorTest extends
EmbeddedClusterTestBase
.hasService("druid/broker"),
agg -> agg.hasSumAtLeast(10)
);
+ eventCollector.latchableEmitter().waitForEvent(
+ event -> event.hasMetricName(Metric.SCHEMA_ROW_SIGNATURE_COLUMN_COUNT)
+ .hasDimension(DruidMetrics.DATASOURCE, dataSource)
+ .hasService("druid/broker")
+ );
cluster.callApi().verifySqlQuery("SELECT * FROM %s", dataSource,
Resources.InlineData.CSV_10_DAYS);
}
diff --git
a/services/src/test/java/org/apache/druid/testing/embedded/EmbeddedClusterApis.java
b/services/src/test/java/org/apache/druid/testing/embedded/EmbeddedClusterApis.java
index 1ed70fdbdca..edbef9207bb 100644
---
a/services/src/test/java/org/apache/druid/testing/embedded/EmbeddedClusterApis.java
+++
b/services/src/test/java/org/apache/druid/testing/embedded/EmbeddedClusterApis.java
@@ -44,6 +44,7 @@ import org.apache.druid.query.DruidMetrics;
import org.apache.druid.query.http.ClientSqlQuery;
import org.apache.druid.rpc.indexing.OverlordClient;
import org.apache.druid.segment.TestHelper;
+import org.apache.druid.segment.metadata.Metric;
import org.apache.druid.server.metrics.LatchableEmitter;
import org.apache.druid.sql.http.ResultFormat;
import org.apache.druid.timeline.DataSegment;
@@ -344,6 +345,10 @@ public class EmbeddedClusterApis implements
EmbeddedResource
agg -> agg.hasSumAtLeast(numTombstones)
);
}
+ broker.latchableEmitter().waitForEvent(
+ event -> event.hasMetricName(Metric.SCHEMA_ROW_SIGNATURE_COLUMN_COUNT)
+ .hasDimension(DruidMetrics.DATASOURCE, dataSource)
+ );
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]