From 721d7bbafbdd2dec7b1a7042c56225fb312afda4 Mon Sep 17 00:00:00 2001 From: Dmitry Kropachev Date: Thu, 19 Mar 2026 13:54:01 -0400 Subject: [PATCH] fix: fallback to any known node when control node not found by endpoint When the control connection endpoint doesn't match any node in metadata (e.g. with PrivateLink or proxy setups), fall back to the first available node instead of immediately throwing an exception. --- .../queries/DefaultSchemaQueriesFactory.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/schema/queries/DefaultSchemaQueriesFactory.java b/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/schema/queries/DefaultSchemaQueriesFactory.java index e537475ed7b..1f6911c6f46 100644 --- a/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/schema/queries/DefaultSchemaQueriesFactory.java +++ b/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/schema/queries/DefaultSchemaQueriesFactory.java @@ -51,12 +51,16 @@ public SchemaQueries newInstance() { .getMetadataManager() .getMetadata() .findNode(channel.getEndPoint()) - .orElseThrow( + .orElseGet( () -> - new IllegalStateException( - "Could not find control node metadata " - + channel.getEndPoint() - + ", aborting schema refresh")); + context.getMetadataManager().getMetadata().getNodes().values().stream() + .findFirst() + .orElseThrow( + () -> + new IllegalStateException( + "Could not find control node metadata " + + channel.getEndPoint() + + ", aborting schema refresh"))); return newInstance(node, channel); }