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;
     }

Reply via email to