From 6d3f8e70a1aa3fc89d6ce76e5f49b4c286f7549b Mon Sep 17 00:00:00 2001 From: NSAmelchev Date: Fri, 9 Oct 2026 21:00:34 +0300 Subject: [PATCH] IGNITE-29132 Fix task execution on an inactive cluster with security enabled --- .../processors/task/GridTaskProcessor.java | 25 +++++-------------- .../security/TaskNameResolutionTest.java | 2 ++ 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java index 4386f8313e3c3..f87ce69423119 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java @@ -27,7 +27,6 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.TimeUnit; import org.apache.ignite.IgniteCheckedException; @@ -153,9 +152,6 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha /** Internal metadata cache. */ private volatile IgniteInternalCache tasksMetaCache; - /** */ - private final CountDownLatch startLatch = new CountDownLatch(1); - /** * {@code true} if local node has persistent region in configuration and is not a client. */ @@ -210,16 +206,6 @@ public GridTaskProcessor(GridKernalContext ctx) { log.debug("Started task processor."); } - /** {@inheritDoc} */ - @Override public void onKernalStart(boolean active) throws IgniteCheckedException { - if (!active) - return; - - tasksMetaCache = ctx.security().enabled() ? ctx.cache().utilityCache() : null; - - startLatch.countDown(); - } - /** {@inheritDoc} */ @Override public void onDisconnected(IgniteFuture reconnectFut) throws IgniteCheckedException { IgniteClientDisconnectedCheckedException err = disconnectedError(reconnectFut); @@ -271,8 +257,6 @@ private IgniteClientDisconnectedCheckedException disconnectedError(@Nullable Ign Thread.currentThread().interrupt(); } - startLatch.countDown(); - int size = tasks.size(); if (size > 0) { @@ -342,8 +326,8 @@ private IgniteClientDisconnectedCheckedException disconnectedError(@Nullable Ign private IgniteInternalCache taskMetaCache() { assert ctx.security().enabled(); - if (tasksMetaCache == null) - U.awaitQuiet(startLatch); + if (tasksMetaCache == null && ctx.state().publicApiActiveState(false)) + tasksMetaCache = ctx.cache().utilityCache(); return tasksMetaCache; } @@ -865,6 +849,9 @@ private void saveTaskMetadata(String taskName) throws IgniteCheckedException { IgniteInternalCache tasksMetaCache = taskMetaCache(); + if (tasksMetaCache == null) + return; + String existingName = tasksMetaCache.get(key); if (existingName == null) @@ -1178,7 +1165,7 @@ public boolean cancel(IgniteUuid sesId) { /** {@inheritDoc} */ @Override public void onActivate(GridKernalContext kctx) throws IgniteCheckedException { - onKernalStart(true); + // No-op. } /** {@inheritDoc} */ diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/TaskNameResolutionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/TaskNameResolutionTest.java index 786367f29f773..2d1315c8bb6ca 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/TaskNameResolutionTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/TaskNameResolutionTest.java @@ -39,6 +39,8 @@ public void testResolveTaskNameOnInactiveCluster() throws Exception { ignite.cluster().state(ClusterState.INACTIVE); + ignite.compute().withName(TASK_NAME).run(() -> {}); + assertNull(grid(1).context().task().resolveTaskName(TASK_NAME.hashCode())); ignite.cluster().state(ClusterState.ACTIVE);