From 2ebcb9e1b47c737667e16ed52af97d44b53d4133 Mon Sep 17 00:00:00 2001 From: Anton Ivashkin Date: Tue, 11 Nov 2025 09:49:45 +0100 Subject: [PATCH] Do not skip last unavailable shard --- src/QueryPipeline/RemoteQueryExecutor.cpp | 5 ----- src/QueryPipeline/RemoteQueryExecutor.h | 2 -- src/QueryPipeline/RemoteQueryExecutorReadContext.cpp | 2 +- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/QueryPipeline/RemoteQueryExecutor.cpp b/src/QueryPipeline/RemoteQueryExecutor.cpp index 83f33a52de41..db8700dfdfd3 100644 --- a/src/QueryPipeline/RemoteQueryExecutor.cpp +++ b/src/QueryPipeline/RemoteQueryExecutor.cpp @@ -1016,11 +1016,6 @@ void RemoteQueryExecutor::setProfileInfoCallback(ProfileInfoCallback callback) profile_info_callback = std::move(callback); } -bool RemoteQueryExecutor::skipUnavailableShards() const -{ - return context->getSettingsRef()[Setting::skip_unavailable_shards]; -} - bool RemoteQueryExecutor::needToSkipUnavailableShard() const { return context->getSettingsRef()[Setting::skip_unavailable_shards] && (0 == connections->size()); diff --git a/src/QueryPipeline/RemoteQueryExecutor.h b/src/QueryPipeline/RemoteQueryExecutor.h index 7ef8be9e27cc..0ea8b0f7bdca 100644 --- a/src/QueryPipeline/RemoteQueryExecutor.h +++ b/src/QueryPipeline/RemoteQueryExecutor.h @@ -233,8 +233,6 @@ class RemoteQueryExecutor IConnections & getConnections() { return *connections; } - bool skipUnavailableShards() const; - bool needToSkipUnavailableShard() const; bool isReplicaUnavailable() const { return extension && extension->parallel_reading_coordinator && connections->size() == 0; } diff --git a/src/QueryPipeline/RemoteQueryExecutorReadContext.cpp b/src/QueryPipeline/RemoteQueryExecutorReadContext.cpp index bd9c0f4966e4..50cfbb74b24c 100644 --- a/src/QueryPipeline/RemoteQueryExecutorReadContext.cpp +++ b/src/QueryPipeline/RemoteQueryExecutorReadContext.cpp @@ -84,7 +84,7 @@ void RemoteQueryExecutorReadContext::Task::run(AsyncCallback async_callback, Sus /// If initiator did not process any data packets before, this fact can be ignored. /// Unprocessed tasks will be executed on other nodes. if (e.code() == ErrorCodes::ATTEMPT_TO_READ_AFTER_EOF - && !read_context.has_data_packets.load() && read_context.executor.skipUnavailableShards()) + && !read_context.has_data_packets.load() && read_context.executor.needToSkipUnavailableShard()) { read_context.has_read_packet_part = PacketPart::None; }