This is an automated email from the ASF dual-hosted git repository. ilyak pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push: new 92b3f1a IGNITE-14439 Re-fixed NPE when accessing clustername before first exchange finished - Fixes #8944. 92b3f1a is described below commit 92b3f1a999d29c5e95847097e150db977e475acc Author: pvinokurov <vinokurov.pa...@gmail.com> AuthorDate: Fri Apr 2 18:39:55 2021 +0300 IGNITE-14439 Re-fixed NPE when accessing clustername before first exchange finished - Fixes #8944. Signed-off-by: Ilya Kasnacheev <ilya.kasnach...@gmail.com> --- .../processors/cache/GridCacheProcessor.java | 7 ---- .../processors/cluster/ClusterProcessor.java | 7 ++++ .../ClusterNameBeforeActivation.java} | 38 +++++++++++----------- .../ignite/testsuites/IgniteCacheTestSuite9.java | 4 +-- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java index 7c1d13d..6b5e493 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java @@ -4432,13 +4432,6 @@ public class GridCacheProcessor extends GridProcessorAdapter { * @return Cache. */ private <K, V> IgniteInternalCache<K, V> internalCacheEx(String name) { - try { - awaitStarted(); - } - catch (IgniteCheckedException e) { - throw U.convertException(e); - } - if (ctx.discovery().localNode().isClient()) { IgniteCacheProxy<K, V> proxy = (IgniteCacheProxy<K, V>)jcacheProxy(name, true); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java index 7625368..f81c162 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java @@ -855,6 +855,13 @@ public class ClusterProcessor extends GridProcessorAdapter implements Distribute * @return Cluster name. * */ public String clusterName() { + try { + ctx.cache().awaitStarted(); + } + catch (IgniteCheckedException e) { + throw U.convertException(e); + } + return IgniteSystemProperties.getString( IGNITE_CLUSTER_NAME, ctx.cache().utilityCache().context().dynamicDeploymentId().toString() diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheReadBeforeActivationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cluster/ClusterNameBeforeActivation.java similarity index 72% rename from modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheReadBeforeActivationTest.java rename to modules/core/src/test/java/org/apache/ignite/internal/processors/cluster/ClusterNameBeforeActivation.java index 0059940..c15a65e 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheReadBeforeActivationTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cluster/ClusterNameBeforeActivation.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.ignite.internal.processors.cache; +package org.apache.ignite.internal.processors.cluster; import java.io.Serializable; import java.util.concurrent.CountDownLatch; @@ -26,7 +26,6 @@ import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.configuration.IgniteConfiguration; import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.IgniteEx; -import org.apache.ignite.internal.processors.cluster.IgniteChangeGlobalStateSupport; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteCallable; import org.apache.ignite.plugin.AbstractTestPluginProvider; @@ -34,10 +33,10 @@ import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; import org.junit.Test; /** - * Tests that caches could not be accessed before activation. + * Tests that cluster name could not be accessed before system cache initialized. */ -public class CacheReadBeforeActivationTest extends GridCommonAbstractTest { - /** Activation latch.*/ +public class ClusterNameBeforeActivation extends GridCommonAbstractTest { + /** Activation latch. */ private CountDownLatch latch; /** {@inheritDoc} */ @@ -50,18 +49,17 @@ public class CacheReadBeforeActivationTest extends GridCommonAbstractTest { } /** - * Tests that reading from the utility system cache waits until activation finished. - * Scenario: - * <ul> - * <li>Start a server node.</li> - * <li>Start a client node with the plugin provider delaying activation.</li> - * <li>Run a job on the client node that reads from the utility cache.</li> - * </ul> + * Tests that getting the cluster name cache waits until system cache started. Scenario: + * <ul> + * <li>Start a server node.</li> + * <li>Start a client node with the plugin provider delaying activation and system cache initalization.</li> + * <li>Run a job on the client node that gets the cluster name.</li> + * </ul> * * @throws Exception If failed. */ @Test - public void readUtilityCacheBeforeActivationFinished() throws Exception { + public void testGetClusterNameBeforeSystemCacheStarted() throws Exception { IgniteEx ignite = startGrid(0); latch = new CountDownLatch(1); @@ -70,12 +68,13 @@ public class CacheReadBeforeActivationTest extends GridCommonAbstractTest { latch.await(1, TimeUnit.MINUTES); - // try to access the utility cache before activation finished and starting exchange on the client node. - ignite.compute(ignite.cluster().forClients()).call(new IgniteCallable<Object>() { - @Override public Object call() throws Exception { - return ((IgniteEx)Ignition.localIgnite()).context().cache().utilityCache().get("1"); + String clusterName = ignite.compute(ignite.cluster().forClients()).call(new IgniteCallable<String>() { + @Override public String call() throws Exception { + return ((IgniteEx)Ignition.localIgnite()).context().cluster().clusterName(); } }); + + assertNotNull(clusterName); } /** @@ -93,10 +92,11 @@ public class CacheReadBeforeActivationTest extends GridCommonAbstractTest { /** {@inheritDoc} */ @Override public void onActivate(GridKernalContext kctx) throws IgniteCheckedException { - if (latch != null) + if (latch != null) { latch.countDown(); - U.sleep(2_000); + U.sleep(2_000); + } } /** {@inheritDoc} */ diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite9.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite9.java index 1cd4977..b3999b3 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite9.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite9.java @@ -33,7 +33,6 @@ import org.apache.ignite.internal.metric.ReadMetricsOnNodeStartupTest; import org.apache.ignite.internal.metric.SystemViewComputeJobTest; import org.apache.ignite.internal.metric.SystemViewSelfTest; import org.apache.ignite.internal.processors.cache.CachePutIfAbsentTest; -import org.apache.ignite.internal.processors.cache.CacheReadBeforeActivationTest; import org.apache.ignite.internal.processors.cache.GridCacheDataTypesCoverageTest; import org.apache.ignite.internal.processors.cache.GridCacheLongRunningTransactionDiagnosticsTest; import org.apache.ignite.internal.processors.cache.GridCacheVersionGenerationWithCacheStorageTest; @@ -63,6 +62,7 @@ import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCount import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateTwoPrimaryTwoBackupsTest; import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateWithFilterTest; import org.apache.ignite.internal.processors.cache.transactions.TxRecoveryOnCoordniatorFailTest; +import org.apache.ignite.internal.processors.cluster.ClusterNameBeforeActivation; import org.apache.ignite.testframework.GridTestUtils; import org.apache.ignite.testframework.junits.DynamicSuite; import org.junit.runner.RunWith; @@ -144,7 +144,7 @@ public class IgniteCacheTestSuite9 { GridTestUtils.addTestIfNeeded(suite, RebalanceStatisticsTest.class, ignoredTests); GridTestUtils.addTestIfNeeded(suite, TxRecoveryOnCoordniatorFailTest.class, ignoredTests); - GridTestUtils.addTestIfNeeded(suite, CacheReadBeforeActivationTest.class, ignoredTests); + GridTestUtils.addTestIfNeeded(suite, ClusterNameBeforeActivation.class, ignoredTests); return suite; }