You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by na...@apache.org on 2022/05/30 09:52:52 UTC

[ignite] branch master updated: IGNITE-17042 Fixed flaky tests failed due to client cache is null (#10044)

This is an automated email from the ASF dual-hosted git repository.

namelchev 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 413372e7d64 IGNITE-17042 Fixed flaky tests failed due to client cache is null (#10044)
413372e7d64 is described below

commit 413372e7d642f471c5a399deb448d55c801d43f3
Author: Nikita Amelchev <ns...@gmail.com>
AuthorDate: Mon May 30 12:52:43 2022 +0300

    IGNITE-17042 Fixed flaky tests failed due to client cache is null (#10044)
---
 .../ClientSizeCacheCreationDestructionTest.java    |  6 ++++
 ...idCommandHandlerClusterByClassAbstractTest.java |  2 +-
 .../internal/IgniteClientReconnectCacheTest.java   |  4 +++
 .../IgniteVariousConnectionNumberTest.java         |  5 +++
 .../cache/CacheEnumOperationsAbstractTest.java     |  2 ++
 ...ceptorPartitionCounterRandomOperationsTest.java |  2 ++
 .../CacheOptimisticTransactionsWithFilterTest.java |  2 ++
 .../cache/CacheSerializableTransactionsTest.java   | 37 ++++++++++++++++++++++
 .../cache/CacheStopAndDestroySelfTest.java         | 18 +++++++++++
 .../cache/CrossCacheTxRandomOperationsTest.java    |  2 ++
 .../IgniteAbstractDynamicCacheStartFailTest.java   |  3 ++
 .../IgniteCacheExpireAndUpdateConsistencyTest.java |  2 ++
 .../processors/cache/IgniteCacheGroupsTest.java    |  9 ++++++
 .../IgniteCacheInvokeReadThroughAbstractTest.java  |  2 ++
 .../cache/IgniteNearClientCacheCloseTest.java      |  2 ++
 .../IgniteAbstractTxSuspendResumeTest.java         |  2 ++
 .../distributed/IgniteCacheGetRestartTest.java     |  5 ++-
 .../distributed/IgniteTxCachePrimarySyncTest.java  | 22 +++++++++++--
 ...WriteSynchronizationModesMultithreadedTest.java |  5 +++
 .../dht/IgniteCacheCrossCacheTxFailoverTest.java   |  2 ++
 .../near/GridCacheNearClientHitTest.java           |  2 ++
 .../near/NearCacheMultithreadedUpdateTest.java     |  2 ++
 ...acheContinuousQueryAsyncFilterListenerTest.java |  4 +--
 .../CacheContinuousQueryOperationP2PTest.java      |  2 ++
 .../CacheContinuousQueryOrderingEventTest.java     |  2 ++
 .../CacheContinuousQueryRandomOperationsTest.java  |  2 ++
 .../CacheEntryProcessorNonSerializableTest.java    |  2 ++
 .../TxDeadlockDetectionUnmasrhalErrorsTest.java    |  2 ++
 .../TxOptimisticDeadlockDetectionTest.java         |  2 ++
 .../TxPartitionCounterStateWithFilterTest.java     |  2 ++
 .../TxPessimisticDeadlockDetectionTest.java        |  2 ++
 .../DataStreamerUpdateAfterLoadTest.java           |  2 ++
 .../IgniteCacheConfigVariationsAbstractTest.java   | 10 ++++--
 .../junits/common/GridCommonAbstractTest.java      | 27 ++++++++++++++++
 .../cache/CacheQueryNewClientSelfTest.java         |  2 ++
 .../cache/GridCacheDynamicLoadOnClientTest.java    |  2 ++
 .../index/DynamicEnableIndexingBasicSelfTest.java  |  2 ++
 .../DynamicEnableIndexingConcurrentSelfTest.java   |  3 ++
 .../DynamicIndexAbstractConcurrentSelfTest.java    |  2 ++
 .../processors/query/timeout/TimedQueryHelper.java |  7 ++++
 .../apache/ignite/sqltests/SqlByteArrayTest.java   |  2 ++
 .../opencensus/OpenCensusSqlNativeTracingTest.java |  2 ++
 42 files changed, 210 insertions(+), 9 deletions(-)

diff --git a/modules/clients/src/test/java/org/apache/ignite/common/ClientSizeCacheCreationDestructionTest.java b/modules/clients/src/test/java/org/apache/ignite/common/ClientSizeCacheCreationDestructionTest.java
index ab657de1506..73e9c70d699 100644
--- a/modules/clients/src/test/java/org/apache/ignite/common/ClientSizeCacheCreationDestructionTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/common/ClientSizeCacheCreationDestructionTest.java
@@ -662,6 +662,8 @@ public class ClientSizeCacheCreationDestructionTest extends GridCommonAbstractTe
         for (int i = 0; i < 2; i++)
             createCache(srv, cacheConfig().setGroupName(CACHE_GROUP_NAME).setName(CACHE_NAME + i));
 
+        awaitCacheOnClient(thickClient, CACHE_NAME + 1);
+
         CountDownLatch latch = new CountDownLatch(1);
 
         IgniteInternalFuture srv = GridTestUtils.runAsync(() -> {
@@ -841,6 +843,8 @@ public class ClientSizeCacheCreationDestructionTest extends GridCommonAbstractTe
 
         srv.createCache(cacheConfig());
 
+        awaitCacheOnClient(thickClient, cacheConfig().getName());
+
         thickClient.destroyCache(CACHE_NAME);
 
         assertEquals(1, srv.cacheNames().size());
@@ -1126,6 +1130,8 @@ public class ClientSizeCacheCreationDestructionTest extends GridCommonAbstractTe
 
         createCacheWithRestClient(cacheConfig());
 
+        awaitCacheOnClient(thickClient, CACHE_NAME);
+
         thickClient.destroyCache(CACHE_NAME);
 
         assertEquals(1, srv.cacheNames().size());
diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassAbstractTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassAbstractTest.java
index 4f11631f61d..c624038aec8 100644
--- a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassAbstractTest.java
+++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassAbstractTest.java
@@ -75,7 +75,7 @@ public abstract class GridCommandHandlerClusterByClassAbstractTest extends GridC
         Set<String> rmvCacheNames = new HashSet<>(crd.cacheNames());
         rmvCacheNames.removeAll(cfgCacheNames);
 
-        crd.destroyCaches(rmvCacheNames);
+        client.destroyCaches(rmvCacheNames);
 
         cfgCacheNames.stream()
             .map(crd::cache)
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java
index 29e773f69b6..371bdb0a95e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectCacheTest.java
@@ -1053,6 +1053,8 @@ public class IgniteClientReconnectCacheTest extends IgniteClientReconnectAbstrac
         srvCache.put(1, new TestClass1());
         srvCache.put(2, new TestClass2());
 
+        awaitCacheOnClient(client, DEFAULT_CACHE_NAME);
+
         IgniteCache<Object, Object> clientCache2 = client.cache(DEFAULT_CACHE_NAME);
 
         assertNotNull(clientCache2);
@@ -1257,6 +1259,8 @@ public class IgniteClientReconnectCacheTest extends IgniteClientReconnectAbstrac
         srv.createCache(ccfg1);
         srv.createCache(ccfg2).put(1, 1);
 
+        awaitCacheOnClient(client, "cache2");
+
         IgniteCache<Integer, Integer> cache = client.cache("cache2");
 
         reconnectClientNode(client, srv, new Runnable() {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteVariousConnectionNumberTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteVariousConnectionNumberTest.java
index 85695bcb0d5..666264fd26d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteVariousConnectionNumberTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/communication/IgniteVariousConnectionNumberTest.java
@@ -25,6 +25,8 @@ import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteRunnable;
 import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
@@ -86,6 +88,9 @@ public class IgniteVariousConnectionNumberTest extends GridCommonAbstractTest {
 
         ignite(0).createCache(ccfg);
 
+        F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+            .forEach(ignite -> awaitCacheOnClient(ignite, ccfg.getName()));
+
         for (int i = 0; i < 10; i++) {
             log.info("Iteration: " + i);
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheEnumOperationsAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheEnumOperationsAbstractTest.java
index 517da042aa3..e613e4edf44 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheEnumOperationsAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheEnumOperationsAbstractTest.java
@@ -105,6 +105,8 @@ public abstract class CacheEnumOperationsAbstractTest extends GridCommonAbstract
             if (!singleNode()) {
                 nodes = 6;
 
+                awaitCacheOnClient(ignite(nodes - 1), ccfg.getName());
+
                 ignite(nodes - 1).createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
             }
             else
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheInterceptorPartitionCounterRandomOperationsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheInterceptorPartitionCounterRandomOperationsTest.java
index 56d5383e7bf..0f956633aba 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheInterceptorPartitionCounterRandomOperationsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheInterceptorPartitionCounterRandomOperationsTest.java
@@ -398,6 +398,8 @@ public class CacheInterceptorPartitionCounterRandomOperationsTest extends GridCo
 
         ignite(0).createCache(ccfg);
 
+        awaitCacheOnClient(grid(NODES - 1), ccfg.getName());
+
         try {
             long seed = System.currentTimeMillis();
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheOptimisticTransactionsWithFilterTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheOptimisticTransactionsWithFilterTest.java
index 5e34f63c81b..a28b7c843d5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheOptimisticTransactionsWithFilterTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheOptimisticTransactionsWithFilterTest.java
@@ -373,6 +373,8 @@ public class CacheOptimisticTransactionsWithFilterTest extends GridCommonAbstrac
                 ", backups=" + ccfg.getBackups() +
                 ", near=" + (ccfg.getNearConfiguration() != null) + "]");
 
+            awaitCacheOnClient(ignite(serversNumber() + 1), ccfg.getName());
+
             ignite(serversNumber() + 1).createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
 
             try {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
index 07251acd4fc..89fe1cc5498 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
@@ -1200,6 +1200,9 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
             try {
                 IgniteCache<Integer, Integer> cache0 = ignite0.createCache(ccfg);
 
+                F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+                    .forEach(ignite -> awaitCacheOnClient(ignite, ccfg.getName()));
+
                 final Integer key1 = primaryKey(ignite(0).cache(cache0.getName()));
                 final Integer key2 = primaryKey(ignite(1).cache(cache0.getName()));
 
@@ -2576,6 +2579,8 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
 
             ignite0.createCache(readCacheCcfg);
 
+            awaitCacheOnClient(ignite(SRVS), readCacheCcfg.getName());
+
             try {
                 checkNoReadLockConflict(ignite(0), ccfg.getName(), ccfg.getName(), entry, putKey);
 
@@ -2663,6 +2668,9 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
 
             ignite0.createCache(ccfg);
 
+            F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+                .forEach(ignite -> awaitCacheOnClient(ignite, ccfg.getName()));
+
             try {
                 final int THREADS = 64;
 
@@ -2904,6 +2912,9 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
 
         ignite(0).createCache(ccfg);
 
+        F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+            .forEach(ignite -> awaitCacheOnClient(ignite, ccfg.getName()));
+
         try {
             final int ACCOUNTS = SF.applyLB(50, 5);
             final int VAL_PER_ACCOUNT = SF.applyLB(1000, 10);
@@ -3087,6 +3098,9 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
             Ignite client1 = ignite(SRVS);
             Ignite client2 = ignite(SRVS + 1);
 
+            awaitCacheOnClient(client1, cacheName);
+            awaitCacheOnClient(client2, cacheName);
+
             IgniteCache<Integer, Integer> cache1 = client1.createNearCache(cacheName,
                 new NearCacheConfiguration<Integer, Integer>());
             IgniteCache<Integer, Integer> cache2 = client2.createNearCache(cacheName,
@@ -3151,6 +3165,8 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
         try {
             Ignite ignite = ignite(SRVS);
 
+            awaitCacheOnClient(ignite, cacheName);
+
             IgniteCache<Integer, Integer> cache = ignite.createNearCache(cacheName,
                 new NearCacheConfiguration<Integer, Integer>());
 
@@ -3239,6 +3255,8 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
         try {
             Ignite ignite = ignite(SRVS);
 
+            awaitCacheOnClient(ignite, cacheName);
+
             IgniteCache<Integer, Integer> cache = ignite.createNearCache(cacheName,
                 new NearCacheConfiguration<Integer, Integer>());
 
@@ -3569,6 +3587,9 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
             try {
                 IgniteCache<Integer, Integer> cache0 = ignite0.createCache(ccfg);
 
+                F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+                    .forEach(ignite -> awaitCacheOnClient(ignite, ccfg.getName()));
+
                 ThreadLocalRandom rnd = ThreadLocalRandom.current();
 
                 for (Ignite ignite : G.allGrids()) {
@@ -3715,6 +3736,8 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
             final List<IgniteCache<Integer, Integer>> caches = new ArrayList<>();
 
             for (Ignite client : clients) {
+                awaitCacheOnClient(client, cacheName);
+
                 if (nearCache)
                     caches.add(client.createNearCache(cacheName, new NearCacheConfiguration<Integer, Integer>()));
                 else
@@ -3829,6 +3852,8 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
             final List<IgniteCache<Integer, Integer>> caches = new ArrayList<>();
 
             for (Ignite client : clients) {
+                awaitCacheOnClient(client, cacheName);
+
                 if (nearCache)
                     caches.add(client.createNearCache(cacheName, new NearCacheConfiguration<Integer, Integer>()));
                 else
@@ -3964,6 +3989,8 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
             final List<IgniteCache<Integer, Integer>> caches = new ArrayList<>();
 
             for (Ignite client : clients) {
+                awaitCacheOnClient(client, cacheName);
+
                 if (nearCache)
                     caches.add(client.createNearCache(cacheName, new NearCacheConfiguration<Integer, Integer>()));
                 else
@@ -4112,6 +4139,9 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
 
         final String cacheName = srv.createCache(ccfg).getName();
 
+        F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+            .forEach(ignite -> awaitCacheOnClient(ignite, ccfg.getName()));
+
         try {
             final List<Ignite> clients = clients();
 
@@ -4204,6 +4234,8 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
 
                     final IgniteTransactions txs = node.transactions();
 
+                    awaitCacheOnClient(node, cacheName);
+
                     final IgniteCache<Integer, Account> cache =
                         nearCache ? node.createNearCache(cacheName, new NearCacheConfiguration<>()) :
                             node.cache(cacheName);
@@ -4748,6 +4780,9 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
         final String cacheName =
             srv.createCache(cacheConfiguration(PARTITIONED, FULL_SYNC, 1, false, false)).getName();
 
+        F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+            .forEach(ignite -> awaitCacheOnClient(ignite, cacheName));
+
         try {
             final int KEYS = SF.apply(20);
 
@@ -5047,6 +5082,8 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
             if (skipFirst && i == 0)
                 continue;
 
+            awaitCacheOnClient(ignite(i), cacheName);
+
             IgniteCache<Object, Object> cache = ignite(i).cache(cacheName);
 
             assertEquals(expVal, cache.get(key));
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java
index b203a12848e..4cb7714d062 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheStopAndDestroySelfTest.java
@@ -217,6 +217,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
     private void dhtDestroy() throws Exception {
         grid(0).getOrCreateCache(getDhtConfig());
 
+        awaitCacheOnClient(grid(2), getDhtConfig().getName());
+
         assertNull(grid(0).cache(CACHE_NAME_DHT).get(KEY_VAL));
 
         grid(0).cache(CACHE_NAME_DHT).put(KEY_VAL, KEY_VAL);
@@ -258,6 +260,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
     private void clientDestroy() throws Exception {
         grid(0).getOrCreateCache(getClientConfig());
 
+        awaitCacheOnClient(grid(2), getClientConfig().getName());
+
         assertNull(grid(0).cache(CACHE_NAME_CLIENT).get(KEY_VAL));
 
         grid(0).cache(CACHE_NAME_CLIENT).put(KEY_VAL, KEY_VAL);
@@ -301,6 +305,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
     private void nearDestroy() throws Exception {
         grid(0).getOrCreateCache(getNearConfig());
 
+        awaitCacheOnClient(grid(2), getNearConfig().getName());
+
         grid(2).getOrCreateNearCache(CACHE_NAME_NEAR, new NearCacheConfiguration());
 
         assertNull(grid(0).cache(CACHE_NAME_NEAR).get(KEY_VAL));
@@ -369,6 +375,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
 
         IgniteCache<Integer, Integer> dhtCache0 = grid(0).getOrCreateCache(getDhtConfig());
 
+        awaitCacheOnClient(grid(2), getDhtConfig().getName());
+
         final Integer key = primaryKey(dhtCache0);
 
         assertNull(dhtCache0.get(key));
@@ -453,6 +461,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
 
         for (int i = 0; i < 3; i++) {
             try (IgniteCache<String, String> cache0 = grid(0).getOrCreateCache(getDhtConfig())) {
+                awaitCacheOnClient(grid(2), getDhtConfig().getName());
+
                 IgniteCache<String, String> cache1 = grid(1).cache(CACHE_NAME_DHT);
                 IgniteCache<String, String> cache2 = grid(2).cache(CACHE_NAME_DHT);
 
@@ -489,6 +499,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
 
         IgniteCache<String, String> cache0 = grid(0).getOrCreateCache(getClientConfig());
 
+        awaitCacheOnClient(grid(2), getClientConfig().getName());
+
         assert cache0.get(KEY_VAL) == null;
 
         cache0.put(KEY_VAL, KEY_VAL);
@@ -605,6 +617,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
 
         IgniteCache<String, String> cache0 = grid(0).getOrCreateCache(getNearConfig());
 
+        awaitCacheOnClient(grid(2), getNearConfig().getName());
+
         // GridDhtTxPrepareRequest requests to Client node will be counted.
         CountingTxRequestsToClientNodeTcpCommunicationSpi.nodeFilter = grid(2).context().localNodeId();
 
@@ -683,6 +697,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
 
         grid(0).getOrCreateCache(getNearConfig());
 
+        awaitCacheOnClient(grid(2), getNearConfig().getName());
+
         NearCacheConfiguration nearCfg = new NearCacheConfiguration();
 
         for (int i = 0; i < 3; i++) {
@@ -754,6 +770,8 @@ public class CacheStopAndDestroySelfTest extends GridCommonAbstractTest {
 
         grid(0).getOrCreateCache(getLocalConfig());
 
+        awaitCacheOnClient(grid(2), getLocalConfig().getName());
+
         grid(0).cache(CACHE_NAME_LOC).put(KEY_VAL, KEY_VAL + "recreated0");
         grid(1).cache(CACHE_NAME_LOC).put(KEY_VAL, KEY_VAL + "recreated1");
         grid(2).cache(CACHE_NAME_LOC).put(KEY_VAL, KEY_VAL + "recreated2");
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
index db97aef448a..507821f5aae 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
@@ -179,6 +179,8 @@ public class CrossCacheTxRandomOperationsTest extends GridCommonAbstractTest {
         Ignite ignite,
         String name) {
         ignite.createCache(cacheConfiguration(name, cacheMode, writeSync, nearCache));
+
+        awaitCacheOnClient(ignite(GRID_CNT - 1), name);
     }
 
     /**
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteAbstractDynamicCacheStartFailTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteAbstractDynamicCacheStartFailTest.java
index 5cb444b8338..8f6258e0e54 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteAbstractDynamicCacheStartFailTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteAbstractDynamicCacheStartFailTest.java
@@ -646,6 +646,9 @@ public abstract class IgniteAbstractDynamicCacheStartFailTest extends GridCacheA
         AffinityTopologyVersion currVer = grid(0).context().discovery().topologyVersionEx();
         AffinityTopologyVersion expVer = currVer.nextMinorVersion();
 
+        // Make sure that client has processed a create cache request before destroying it.
+        awaitCacheOnClient(client, DYNAMIC_CACHE_NAME);
+
         // Let's try to destroy the cache that is being started.
         IgniteInternalFuture<?> stopFut = GridTestUtils.runAsync(() -> client.destroyCache(DYNAMIC_CACHE_NAME));
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpireAndUpdateConsistencyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpireAndUpdateConsistencyTest.java
index 535e5fad53a..bf039800e5f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpireAndUpdateConsistencyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheExpireAndUpdateConsistencyTest.java
@@ -128,6 +128,8 @@ public class IgniteCacheExpireAndUpdateConsistencyTest extends GridCommonAbstrac
     private void updateAndEventConsistencyTest(CacheConfiguration<TestKey, TestValue> ccfg) throws Exception {
         ignite(0).createCache(ccfg);
 
+        awaitCacheOnClient(ignite(4), ccfg.getName());
+
         try {
             List<ConcurrentMap<TestKey, List<T2<TestValue, TestValue>>>> nodesEvts = new ArrayList<>();
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java
index e952c80a2d0..d4322e6455c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java
@@ -87,6 +87,7 @@ import org.apache.ignite.internal.util.lang.GridIterator;
 import org.apache.ignite.internal.util.lang.GridPlainCallable;
 import org.apache.ignite.internal.util.lang.gridfunc.ContainsPredicate;
 import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.PA;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.CU;
@@ -2151,6 +2152,8 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
 
         srv0.createCache(cacheConfiguration(null, "cache-3", cacheMode, atomicityMode, backups, heapCache));
 
+        awaitCacheOnClient(ignite(4), "cache-3");
+
         if (nearClient) {
             Ignite clientNode = ignite(4);
 
@@ -2992,6 +2995,9 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
         srv0.createCache(cacheConfiguration(GROUP1, "t0", PARTITIONED, TRANSACTIONAL, 1, false));
         srv0.createCache(cacheConfiguration(GROUP1, "t1", PARTITIONED, TRANSACTIONAL, 1, false));
 
+        F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+            .forEach(ignite -> awaitCacheOnClient(ignite, "t1"));
+
         final List<Integer> keys = new ArrayList<>();
 
         for (int i = 0; i < 50; i++)
@@ -3107,6 +3113,9 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest {
             // TODO IGNITE-7164: add Mvcc cache to test.
         }
 
+        F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+            .forEach(ignite -> awaitCacheOnClient(ignite, GROUP2 + "-" + (CACHES - 1)));
+
         final AtomicInteger idx = new AtomicInteger();
 
         final AtomicBoolean err = new AtomicBoolean();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeReadThroughAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeReadThroughAbstractTest.java
index 4676c43a0f0..074b3517f57 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeReadThroughAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheInvokeReadThroughAbstractTest.java
@@ -109,6 +109,8 @@ public abstract class IgniteCacheInvokeReadThroughAbstractTest extends GridCommo
         int key = 0;
 
         for (Ignite node : G.allGrids()) {
+            awaitCacheOnClient(node, ccfg.getName());
+
             if (node.configuration().isClientMode() && ccfg.getNearConfiguration() != null)
                 node.createNearCache(ccfg.getName(), ccfg.getNearConfiguration());
         }
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteNearClientCacheCloseTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteNearClientCacheCloseTest.java
index 60e38c941f5..268f07a3379 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteNearClientCacheCloseTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteNearClientCacheCloseTest.java
@@ -195,6 +195,8 @@ public class IgniteNearClientCacheCloseTest extends GridCommonAbstractTest {
         for (int iter = 0; iter < 5; iter++) {
             log.info("Iteration: " + iter);
 
+            awaitCacheOnClient(ignite(nearClient), cacheName);
+
             IgniteCache<Object, Object> nearCache = ignite(nearClient).createNearCache(cacheName,
                 new NearCacheConfiguration<>());
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteAbstractTxSuspendResumeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteAbstractTxSuspendResumeTest.java
index 55e917043c5..6687a537323 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteAbstractTxSuspendResumeTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteAbstractTxSuspendResumeTest.java
@@ -119,6 +119,8 @@ public abstract class IgniteAbstractTxSuspendResumeTest extends GridCommonAbstra
         for (CacheConfiguration<Integer, Integer> ccfg : cacheConfigurations()) {
             grid(0).createCache(ccfg);
 
+            awaitCacheOnClient(client, ccfg.getName());
+
             if (ccfg.getCacheMode() != LOCAL && !FORCE_MVCC)
                 client.createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
         }
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
index 39c79b1460d..b16c307081c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
@@ -157,8 +157,11 @@ public class IgniteCacheGetRestartTest extends GridCommonAbstractTest {
         ignite(0).createCache(ccfg);
 
         try {
-            if (ccfg.getNearConfiguration() != null)
+            if (ccfg.getNearConfiguration() != null) {
+                awaitCacheOnClient(ignite(SRVS), ccfg.getName());
+
                 ignite(SRVS).createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
+            }
 
             try (IgniteDataStreamer<Object, Object> streamer = ignite(0).dataStreamer(ccfg.getName())) {
                 streamer.allowOverwrite(true);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java
index 06cb0f3357a..265d009e60b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCachePrimarySyncTest.java
@@ -49,6 +49,7 @@ import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPr
 import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareResponse;
 import org.apache.ignite.internal.processors.cache.transactions.TransactionProxyImpl;
 import org.apache.ignite.internal.util.lang.GridAbsPredicate;
+import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiInClosure;
@@ -156,6 +157,9 @@ public class IgniteTxCachePrimarySyncTest extends GridCommonAbstractTest {
 
         IgniteCache<Object, Object> cache = ignite.createCache(ccfg);
 
+        F.view(G.allGrids(), node -> node.cluster().localNode().isClient())
+            .forEach(node -> awaitCacheOnClient(node, ccfg.getName()));
+
         try {
             for (int i = 0; i < SRVS; i++) {
                 Ignite node = ignite(i);
@@ -286,8 +290,11 @@ public class IgniteTxCachePrimarySyncTest extends GridCommonAbstractTest {
         IgniteCache<Object, Object> cache = ignite.createCache(ccfg);
 
         try {
-            if (!MvccFeatureChecker.forcedMvcc() || MvccFeatureChecker.isSupported(Feature.NEAR_CACHE))
+            if (!MvccFeatureChecker.forcedMvcc() || MvccFeatureChecker.isSupported(Feature.NEAR_CACHE)) {
+                awaitCacheOnClient(ignite(NODES - 1), ccfg.getName());
+
                 ignite(NODES - 1).createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
+            }
 
             for (int i = 0; i < NODES; i++) {
                 Ignite node = ignite(i);
@@ -423,8 +430,11 @@ public class IgniteTxCachePrimarySyncTest extends GridCommonAbstractTest {
         IgniteCache<Object, Object> cache = ignite.createCache(ccfg);
 
         try {
-            if (!MvccFeatureChecker.forcedMvcc() || MvccFeatureChecker.isSupported(Feature.NEAR_CACHE))
+            if (!MvccFeatureChecker.forcedMvcc() || MvccFeatureChecker.isSupported(Feature.NEAR_CACHE)) {
+                awaitCacheOnClient(ignite(NODES - 1), ccfg.getName());
+
                 ignite(NODES - 1).createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
+            }
 
             for (int i = 1; i < NODES; i++) {
                 Ignite node = ignite(i);
@@ -580,8 +590,11 @@ public class IgniteTxCachePrimarySyncTest extends GridCommonAbstractTest {
         IgniteCache<Object, Object> cache = ignite.createCache(ccfg);
 
         try {
-            if (!MvccFeatureChecker.forcedMvcc() || MvccFeatureChecker.isSupported(Feature.NEAR_CACHE))
+            if (!MvccFeatureChecker.forcedMvcc() || MvccFeatureChecker.isSupported(Feature.NEAR_CACHE)) {
+                awaitCacheOnClient(ignite(NODES - 1), ccfg.getName());
+
                 ignite(NODES - 1).createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
+            }
 
             for (int i = 1; i < NODES; i++) {
                 Ignite node = ignite(i);
@@ -719,6 +732,9 @@ public class IgniteTxCachePrimarySyncTest extends GridCommonAbstractTest {
 
         IgniteCache<Object, Object> cache = ignite.createCache(ccfg);
 
+        F.view(G.allGrids(), node -> node.cluster().localNode().isClient())
+            .forEach(node -> awaitCacheOnClient(node, ccfg.getName()));
+
         try {
             for (int i = 1; i < NODES; i++) {
                 Ignite node = ignite(i);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
index e398214fefe..e71e6e8ac13 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
@@ -40,6 +40,8 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.configuration.NearCacheConfiguration;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.util.lang.GridAbsPredicate;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiInClosure;
@@ -384,6 +386,9 @@ public class IgniteTxCacheWriteSynchronizationModesMultithreadedTest extends Gri
         boolean nearCache) {
         IgniteCache<K, V> cache = ignite.createCache(ccfg);
 
+        F.view(G.allGrids(), node -> node.cluster().localNode().isClient())
+            .forEach(node -> awaitCacheOnClient(node, ccfg.getName()));
+
         if (nearCache)
             ignite(NODES - 1).createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheCrossCacheTxFailoverTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheCrossCacheTxFailoverTest.java
index 64aefed4b42..ddd55d3f5ef 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheCrossCacheTxFailoverTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheCrossCacheTxFailoverTest.java
@@ -207,6 +207,8 @@ public class IgniteCacheCrossCacheTxFailoverTest extends GridCommonAbstractTest
             ignite0.createCache(cacheConfiguration(CACHE1, cacheMode, 256));
             ignite0.createCache(cacheConfiguration(CACHE2, cacheMode, sameAff ? 256 : 128));
 
+            awaitCacheOnClient(grid(GRID_CNT - 1), CACHE2);
+
             final AtomicInteger threadIdx = new AtomicInteger();
 
             IgniteInternalFuture<?> fut = runMultiThreadedAsync(new Callable<Void>() {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearClientHitTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearClientHitTest.java
index 128d348412e..4170e986866 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearClientHitTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearClientHitTest.java
@@ -80,6 +80,8 @@ public class GridCacheNearClientHitTest extends GridCommonAbstractTest {
 
             IgniteCache<Object, Object> cache = srvNode.getOrCreateCache(cacheConfiguration());
 
+            awaitCacheOnClient(client, CACHE_NAME);
+
             IgniteCache<Object, Object> nearCache = client.createNearCache(CACHE_NAME, nearCacheConfiguration());
 
             UUID serverNodeId = srvNode.cluster().localNode().id();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/NearCacheMultithreadedUpdateTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/NearCacheMultithreadedUpdateTest.java
index b714a95b06a..081d5f4f3d9 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/NearCacheMultithreadedUpdateTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/NearCacheMultithreadedUpdateTest.java
@@ -98,6 +98,8 @@ public class NearCacheMultithreadedUpdateTest extends GridCommonAbstractTest {
 
         assertTrue(client.configuration().isClientMode());
 
+        awaitCacheOnClient(client, DEFAULT_CACHE_NAME);
+
         final IgniteCache<Integer, Integer> clientCache =
             client.createNearCache(DEFAULT_CACHE_NAME, new NearCacheConfiguration<Integer, Integer>());
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryAsyncFilterListenerTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryAsyncFilterListenerTest.java
index 7d20e946308..6dfe55f19d2 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryAsyncFilterListenerTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryAsyncFilterListenerTest.java
@@ -438,7 +438,7 @@ public class CacheContinuousQueryAsyncFilterListenerTest extends GridCommonAbstr
         final boolean asyncFltr,
         boolean asyncLsnr,
         boolean jcacheApi) throws Exception {
-        ignite(0).createCache(ccfg);
+        ignite(NODES - 1).createCache(ccfg);
 
         ThreadLocalRandom rnd = ThreadLocalRandom.current();
 
@@ -613,7 +613,7 @@ public class CacheContinuousQueryAsyncFilterListenerTest extends GridCommonAbstr
         final boolean asyncFilter,
         final boolean asyncLsnr,
         boolean jcacheApi) throws Exception {
-        ignite(0).createCache(ccfg);
+        ignite(NODES - 1).createCache(ccfg);
 
         ThreadLocalRandom rnd = ThreadLocalRandom.current();
 
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryOperationP2PTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryOperationP2PTest.java
index 2ef33cbc311..15433f6deeb 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryOperationP2PTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryOperationP2PTest.java
@@ -370,6 +370,8 @@ public class CacheContinuousQueryOperationP2PTest extends GridCommonAbstractTest
 
         IgniteCache<Integer, Integer> cache;
 
+        awaitCacheOnClient(grid(NODES - 1), ccfg.getName());
+
         cache = isClient
             ? grid(NODES - 1).cache(ccfg.getName())
             : grid(rnd.nextInt(NODES - 1)).cache(ccfg.getName());
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryOrderingEventTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryOrderingEventTest.java
index 5b054024068..2a538785ab7 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryOrderingEventTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryOrderingEventTest.java
@@ -325,6 +325,8 @@ public class CacheContinuousQueryOrderingEventTest extends GridCommonAbstractTes
         throws Exception {
         ignite(0).createCache(ccfg);
 
+        awaitCacheOnClient(grid(NODES - 1), ccfg.getName());
+
         List<QueryCursor<?>> qries = new ArrayList<>();
 
         try {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryRandomOperationsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryRandomOperationsTest.java
index 9180b65578b..2b7e54f40a4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryRandomOperationsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryRandomOperationsTest.java
@@ -1138,6 +1138,8 @@ public class CacheContinuousQueryRandomOperationsTest extends GridCommonAbstract
 
                     evtsQueues.add(evtsQueue);
 
+                    awaitCacheOnClient(ignite(i), ccfg.getName());
+
                     QueryCursor<?> cur = ignite(i).cache(ccfg.getName()).query(qry);
 
                     curs.add(cur);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java
index 30734e68b8e..1302122574c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheEntryProcessorNonSerializableTest.java
@@ -427,6 +427,8 @@ public class CacheEntryProcessorNonSerializableTest extends GridCommonAbstractTe
 
         grid(0).createCache(ccfg);
 
+        awaitCacheOnClient(cln, ccfg.getName());
+
         IgniteCache clnCache;
 
         if (ccfg.getNearConfiguration() != null)
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java
index f41aaab9a90..1f0315b2385 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionUnmasrhalErrorsTest.java
@@ -87,6 +87,8 @@ public class TxDeadlockDetectionUnmasrhalErrorsTest extends GridCommonAbstractTe
             cache0 = getCache(ignite(0), "cache0");
             cache1 = getCache(ignite(0), "cache1");
 
+            awaitCacheOnClient(grid(1), "cache0");
+
             IgniteCache<Integer, Integer> clientCache0 = grid(1).cache("cache0");
 
             awaitPartitionMapExchange();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
index 16889a609a0..f14e2350b2d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
@@ -179,6 +179,8 @@ public class TxOptimisticDeadlockDetectionTest extends AbstractDeadlockDetection
 
                 assertTrue(client.configuration().isClientMode());
 
+                awaitCacheOnClient(client, ccfg.getName());
+
                 client.createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
             }
         }
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateWithFilterTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateWithFilterTest.java
index 4811dca5dc6..7c03e3370c5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateWithFilterTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateWithFilterTest.java
@@ -92,6 +92,8 @@ public class TxPartitionCounterStateWithFilterTest extends GridCommonAbstractTes
                     try {
                         ignite(0).createCache(cacheConfiguration(cacheMode, backups, CacheAtomicityMode.TRANSACTIONAL));
 
+                        awaitCacheOnClient(ig, DEFAULT_CACHE_NAME);
+
                         IgniteCache<Integer, Integer> cache = ig.cache(DEFAULT_CACHE_NAME);
 
                         assertNotNull(cache);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java
index 48b63be1289..1480b98e9ff 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java
@@ -195,6 +195,8 @@ public class TxPessimisticDeadlockDetectionTest extends AbstractDeadlockDetectio
 
                 assertTrue(client.configuration().isClientMode());
 
+                awaitCacheOnClient(client, ccfg.getName());
+
                 client.createNearCache(ccfg.getName(), new NearCacheConfiguration<>());
             }
         }
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateAfterLoadTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateAfterLoadTest.java
index af64277ba00..526c4209304 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateAfterLoadTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateAfterLoadTest.java
@@ -57,6 +57,8 @@ public class DataStreamerUpdateAfterLoadTest extends GridCommonAbstractTest {
             int key = 0;
 
             try (IgniteCache<Integer, Integer> cache = ignite0.createCache(ccfg)) {
+                awaitCacheOnClient(grid(NODES - 1), ccfg.getName());
+
                 key = testLoadAndUpdate(cache.getName(), key, false);
 
                 testLoadAndUpdate(cache.getName(), key, true);
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java
index 8578f81522f..395530f39b6 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteCacheConfigVariationsAbstractTest.java
@@ -98,8 +98,11 @@ public abstract class IgniteCacheConfigVariationsAbstractTest extends IgniteConf
                     startGrid(igniteInstanceName, cfg, null);
                 }
 
-                if (testsCfg.withClients() && testsCfg.gridCount() > CLIENT_NEAR_ONLY_IDX)
+                if (testsCfg.withClients() && testsCfg.gridCount() > CLIENT_NEAR_ONLY_IDX) {
+                    awaitCacheOnClient(grid(CLIENT_NEAR_ONLY_IDX), cacheName());
+
                     grid(CLIENT_NEAR_ONLY_IDX).createNearCache(cacheName(), new NearCacheConfiguration());
+                }
             }
             else if (cacheStartMode == null || cacheStartMode == CacheStartMode.DYNAMIC) {
                 super.beforeTestsStarted();
@@ -154,8 +157,11 @@ public abstract class IgniteCacheConfigVariationsAbstractTest extends IgniteConf
                 grid.getOrCreateCache(cc);
             }
 
-            if (testsCfg.withClients() && i == CLIENT_NEAR_ONLY_IDX && grid(i).configuration().isClientMode())
+            if (testsCfg.withClients() && i == CLIENT_NEAR_ONLY_IDX && grid(i).configuration().isClientMode()) {
+                awaitCacheOnClient(grid(CLIENT_NEAR_ONLY_IDX), cacheName());
+
                 grid(CLIENT_NEAR_ONLY_IDX).createNearCache(cacheName(), new NearCacheConfiguration());
+            }
         }
 
         awaitPartitionMapExchange();
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
index bbda79b0609..14d33c13899 100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
@@ -153,11 +153,13 @@ import static java.util.stream.Collectors.toList;
 import static java.util.stream.Collectors.toSet;
 import static org.apache.ignite.cache.CacheMode.LOCAL;
 import static org.apache.ignite.cache.CacheRebalanceMode.NONE;
+import static org.apache.ignite.configuration.IgniteConfiguration.DFLT_NETWORK_TIMEOUT;
 import static org.apache.ignite.configuration.IgniteConfiguration.DFLT_SNAPSHOT_DIRECTORY;
 import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isNearEnabled;
 import static org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState.OWNING;
 import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.DFLT_STORE_DIR;
 import static org.apache.ignite.testframework.GridTestUtils.setFieldValue;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
 import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
 import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -2393,6 +2395,31 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
         }
     }
 
+    /**
+     * Awaits for the cache to be available on the client node.
+     * <p/>
+     * Client nodes receive the created cache descriptor asynchronously:
+     * <pre name="code" class="java">
+     *      server.createCache("cache");
+     *      ...
+     *      IgniteCache cache = client.cache("cache"); // May be null.
+     * </pre>
+     *
+     * @param client Client node.
+     * @param cacheName Cache name.
+     */
+    public static void awaitCacheOnClient(Ignite client, String cacheName) {
+        if (!client.cluster().localNode().isClient())
+            return;
+
+        try {
+            assertTrue(waitForCondition(() -> client.cacheNames().contains(cacheName), DFLT_NETWORK_TIMEOUT));
+        }
+        catch (IgniteInterruptedCheckedException e) {
+            throw U.convertException(e);
+        }
+    }
+
     /**
      * @param partId Partition id.
      * @param gridName Grid name.
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheQueryNewClientSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheQueryNewClientSelfTest.java
index 1b9a293c750..37b5eb3cf88 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheQueryNewClientSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/CacheQueryNewClientSelfTest.java
@@ -56,6 +56,8 @@ public class CacheQueryNewClientSelfTest extends GridCommonAbstractTest {
 
             Ignite client = (iter == 0) ? startClientGrid("client") : grid("client");
 
+            awaitCacheOnClient(client, "cache1");
+
             IgniteCache<Integer, Integer> cache = client.cache("cache1");
 
             List<List<?>> res = cache.query(new SqlFieldsQuery(
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDynamicLoadOnClientTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDynamicLoadOnClientTest.java
index 228bd2fde9f..79a31470316 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDynamicLoadOnClientTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDynamicLoadOnClientTest.java
@@ -249,6 +249,8 @@ public class GridCacheDynamicLoadOnClientTest extends GridCommonAbstractTest {
 
         for (int i = 0; i < CACHE_ELEMENT_COUNT; i++)
             srvNode.cache(PERSON_CACHE).put(i, new Person(i, "name-" + i));
+
+        awaitCacheOnClient(clientNode, PERSON_CACHE);
     }
 
     /**
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingBasicSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingBasicSelfTest.java
index 492084d5a90..c281187c605 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingBasicSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingBasicSelfTest.java
@@ -109,6 +109,8 @@ public class DynamicEnableIndexingBasicSelfTest extends DynamicEnableIndexingAbs
 
         node().getOrCreateCache(ccfg);
 
+        awaitCacheOnClient(grid(IDX_CLI_NEAR_ONLY), POI_CACHE_NAME);
+
         if (atomicityMode != CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT)
             grid(IDX_CLI_NEAR_ONLY).getOrCreateNearCache(POI_CACHE_NAME, new NearCacheConfiguration<>());
     }
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingConcurrentSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingConcurrentSelfTest.java
index f4e3a1d1ffb..61a52e0e5d3 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingConcurrentSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicEnableIndexingConcurrentSelfTest.java
@@ -260,6 +260,9 @@ public class DynamicEnableIndexingConcurrentSelfTest extends DynamicEnableIndexi
         srv1.cluster().state(ClusterState.ACTIVE);
 
         createCache(srv1);
+
+        awaitCacheOnClient(grid(4), POI_CACHE_NAME);
+
         loadData(srv1, 0, NUM_ENTRIES);
 
         CountDownLatch idxLatch = blockIndexing(srv1);
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicIndexAbstractConcurrentSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicIndexAbstractConcurrentSelfTest.java
index f6efc85dc2e..ca423e7b809 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicIndexAbstractConcurrentSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/DynamicIndexAbstractConcurrentSelfTest.java
@@ -216,6 +216,8 @@ public abstract class DynamicIndexAbstractConcurrentSelfTest extends DynamicInde
 
         createSqlCache(srv1);
 
+        awaitCacheOnClient(grid(4), cacheConfiguration().getName());
+
         CountDownLatch idxLatch = blockIndexing(srv1);
 
         QueryIndex idx1 = index(IDX_NAME_1, field(FIELD_NAME_1));
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/timeout/TimedQueryHelper.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/timeout/TimedQueryHelper.java
index e8ac9a3a7ad..b1cd4fdab6f 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/timeout/TimedQueryHelper.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/timeout/TimedQueryHelper.java
@@ -27,6 +27,10 @@ import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.QueryEntity;
 import org.apache.ignite.cache.query.annotations.QuerySqlFunction;
 import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.G;
+
+import static org.apache.ignite.testframework.junits.common.GridCommonAbstractTest.awaitCacheOnClient;
 
 /**
  * This class helps to prepare a query which will run for a specific amount of time
@@ -62,6 +66,9 @@ public class TimedQueryHelper {
                 new QueryEntity(Integer.class, Integer.class).setTableName(cacheName)))
             .setSqlFunctionClasses(TimedQueryHelper.class));
 
+        F.view(G.allGrids(), ignite -> ignite.cluster().localNode().isClient())
+            .forEach(ignite -> awaitCacheOnClient(ignite, cacheName));
+
         Map<Integer, Integer> entries = IntStream.range(0, ROW_COUNT).boxed()
             .collect(Collectors.toMap(Function.identity(), Function.identity()));
 
diff --git a/modules/indexing/src/test/java/org/apache/ignite/sqltests/SqlByteArrayTest.java b/modules/indexing/src/test/java/org/apache/ignite/sqltests/SqlByteArrayTest.java
index e48ff878a50..b0803137db6 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/sqltests/SqlByteArrayTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/sqltests/SqlByteArrayTest.java
@@ -62,6 +62,8 @@ public class SqlByteArrayTest extends AbstractBinaryArraysTest {
 
         IgniteCache<Integer, Object> cache = ignite.createCache(ccfg);
 
+        awaitCacheOnClient(client, ccfg.getName());
+
         cache.query(new SqlFieldsQuery("INSERT INTO array_table (_key, _val) VALUES (?, ?)").setArgs(2, val1)).getAll();
 
         assertTrue(cache.containsKey(2));
diff --git a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlNativeTracingTest.java b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlNativeTracingTest.java
index f7f713893b4..56341665dc8 100644
--- a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlNativeTracingTest.java
+++ b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlNativeTracingTest.java
@@ -730,6 +730,8 @@ public class OpenCensusSqlNativeTracingTest extends AbstractTracingTest {
                 .setSqlSchema(TEST_SCHEMA)
         );
 
+        awaitCacheOnClient(grid(GRID_CNT), cache.getName());
+
         for (int i = 0; i < TEST_TABLE_POPULATION; i++)
             cache.put(keyCntr.getAndIncrement(), cls == Organization.class ? new Organization(i, i) : new Person(i, i));