From 2128eca3928a6550ded66ba09cd628f563d2e648 Mon Sep 17 00:00:00 2001 From: Joshua Adams Date: Tue, 7 Oct 2025 13:02:46 +0100 Subject: [PATCH 1/3] Replace FailedToCommitClusterStateException with NotMasterException Replaces the FailedToCommitClusterStateException inside MasterService .BatchingTaskQueue.submitTask with a NotMasterException. Relates to: ES-13061 --- .../cluster/health/TransportClusterHealthAction.java | 6 ++---- .../org/elasticsearch/cluster/service/MasterService.java | 8 +------- .../elasticsearch/cluster/service/MasterServiceTests.java | 2 +- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/health/TransportClusterHealthAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/health/TransportClusterHealthAction.java index f0961386441f1..ea7e5f0344239 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/cluster/health/TransportClusterHealthAction.java +++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/health/TransportClusterHealthAction.java @@ -24,7 +24,6 @@ import org.elasticsearch.cluster.LocalMasterServiceTask; import org.elasticsearch.cluster.NotMasterException; import org.elasticsearch.cluster.block.ClusterBlockException; -import org.elasticsearch.cluster.coordination.FailedToCommitClusterStateException; import org.elasticsearch.cluster.health.ClusterHealthStatus; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; import org.elasticsearch.cluster.metadata.ProcessClusterEventTimeoutException; @@ -243,9 +242,8 @@ public void onFailure(Exception e) { static boolean isExpectedFailure(Exception e) { return e instanceof NotMasterException - || e instanceof FailedToCommitClusterStateException - && e.getCause() instanceof EsRejectedExecutionException esre - && esre.isExecutorShutdown(); + && e.getCause() instanceof EsRejectedExecutionException esre + && esre.isExecutorShutdown(); } }); diff --git a/server/src/main/java/org/elasticsearch/cluster/service/MasterService.java b/server/src/main/java/org/elasticsearch/cluster/service/MasterService.java index 7d4c7fc410c87..2ea5e14639b29 100644 --- a/server/src/main/java/org/elasticsearch/cluster/service/MasterService.java +++ b/server/src/main/java/org/elasticsearch/cluster/service/MasterService.java @@ -1607,13 +1607,7 @@ public void submitTask(String source, T task, @Nullable TimeValue timeout) { } catch (Exception e) { assert e instanceof EsRejectedExecutionException esre && esre.isExecutorShutdown() : e; task.onFailure( - new FailedToCommitClusterStateException( - "could not schedule timeout handler for [%s][%s] on queue [%s]", - e, - source, - task, - name - ) + new NotMasterException("could not schedule timeout handler for [%s][%s] on queue [%s]", e, source, task, name) ); return; } diff --git a/server/src/test/java/org/elasticsearch/cluster/service/MasterServiceTests.java b/server/src/test/java/org/elasticsearch/cluster/service/MasterServiceTests.java index da8c013ef44c3..5badfd38654a7 100644 --- a/server/src/test/java/org/elasticsearch/cluster/service/MasterServiceTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/service/MasterServiceTests.java @@ -2249,7 +2249,7 @@ public void testTimeoutRejectionBehaviourAtSubmission() { ).submitTask(source, new ClusterStateTaskListener() { @Override public void onFailure(Exception e) { - if (e instanceof FailedToCommitClusterStateException + if (e instanceof NotMasterException && e.getMessage().startsWith("could not schedule timeout handler") && e.getCause() instanceof EsRejectedExecutionException esre && esre.isExecutorShutdown() From 8e2f84f6215a1d6d4aea15a81916e80fcad5cdbe Mon Sep 17 00:00:00 2001 From: Joshua Adams Date: Tue, 7 Oct 2025 16:57:18 +0100 Subject: [PATCH 2/3] Replace FailedToCommitClusterStateException with NotMasterException Replaces the FailedToCommitClusterStateException inside MasterService .BatchingTaskQueue.submitTask with a NotMasterException. Relates to: ES-13061 --- .../org/elasticsearch/cluster/service/MasterService.java | 8 +------- .../elasticsearch/cluster/service/MasterServiceTests.java | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/service/MasterService.java b/server/src/main/java/org/elasticsearch/cluster/service/MasterService.java index 7d4c7fc410c87..2ea5e14639b29 100644 --- a/server/src/main/java/org/elasticsearch/cluster/service/MasterService.java +++ b/server/src/main/java/org/elasticsearch/cluster/service/MasterService.java @@ -1607,13 +1607,7 @@ public void submitTask(String source, T task, @Nullable TimeValue timeout) { } catch (Exception e) { assert e instanceof EsRejectedExecutionException esre && esre.isExecutorShutdown() : e; task.onFailure( - new FailedToCommitClusterStateException( - "could not schedule timeout handler for [%s][%s] on queue [%s]", - e, - source, - task, - name - ) + new NotMasterException("could not schedule timeout handler for [%s][%s] on queue [%s]", e, source, task, name) ); return; } diff --git a/server/src/test/java/org/elasticsearch/cluster/service/MasterServiceTests.java b/server/src/test/java/org/elasticsearch/cluster/service/MasterServiceTests.java index da8c013ef44c3..5badfd38654a7 100644 --- a/server/src/test/java/org/elasticsearch/cluster/service/MasterServiceTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/service/MasterServiceTests.java @@ -2249,7 +2249,7 @@ public void testTimeoutRejectionBehaviourAtSubmission() { ).submitTask(source, new ClusterStateTaskListener() { @Override public void onFailure(Exception e) { - if (e instanceof FailedToCommitClusterStateException + if (e instanceof NotMasterException && e.getMessage().startsWith("could not schedule timeout handler") && e.getCause() instanceof EsRejectedExecutionException esre && esre.isExecutorShutdown() From b447361b97cf377459a7fe316237bfdd1a1abf1a Mon Sep 17 00:00:00 2001 From: Joshua Adams Date: Tue, 7 Oct 2025 16:59:14 +0100 Subject: [PATCH 3/3] Revert TransportClusterHealthAction change --- .../admin/cluster/health/TransportClusterHealthAction.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/health/TransportClusterHealthAction.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/health/TransportClusterHealthAction.java index ea7e5f0344239..f0961386441f1 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/cluster/health/TransportClusterHealthAction.java +++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/health/TransportClusterHealthAction.java @@ -24,6 +24,7 @@ import org.elasticsearch.cluster.LocalMasterServiceTask; import org.elasticsearch.cluster.NotMasterException; import org.elasticsearch.cluster.block.ClusterBlockException; +import org.elasticsearch.cluster.coordination.FailedToCommitClusterStateException; import org.elasticsearch.cluster.health.ClusterHealthStatus; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; import org.elasticsearch.cluster.metadata.ProcessClusterEventTimeoutException; @@ -242,8 +243,9 @@ public void onFailure(Exception e) { static boolean isExpectedFailure(Exception e) { return e instanceof NotMasterException - && e.getCause() instanceof EsRejectedExecutionException esre - && esre.isExecutorShutdown(); + || e instanceof FailedToCommitClusterStateException + && e.getCause() instanceof EsRejectedExecutionException esre + && esre.isExecutorShutdown(); } });