mhansonp commented on code in PR #7608: URL: https://github.com/apache/geode/pull/7608#discussion_r853583299
########## geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/DurableClientTestCase.java: ########## @@ -590,73 +616,92 @@ private void durableFailoverAfterReconnect(int redundancyLevel) { } durableClientVM.invoke(CacheServerTestUtil::disableShufflingOfEndpoints); - durableClientVM.invoke(() -> CacheServerTestUtil.createCacheClient(clientPool, regionName, + // Create the durable client cache (type = cache) + durableClientVM.invoke(() -> createCacheClient(clientPool, regionName, getClientDistributedSystemProperties(durableClientId, VERY_LONG_DURABLE_TIMEOUT_SECONDS), - Boolean.TRUE)); + true)); + + // Register interest in all entries in the region + registerInterest(durableClientVM, regionName, true, InterestResultPolicy.NONE); // Send clientReady message - durableClientVM.invoke(new CacheSerializableRunnable("Send clientReady") { + durableClientVM.invoke("Send clientReady", new CacheSerializableRunnable() { @Override public void run2() throws CacheException { - CacheServerTestUtil.getCache().readyForEvents(); + getCache().readyForEvents(); } }); - registerInterest(durableClientVM, regionName, true, InterestResultPolicy.NONE); - + // Verify the durable client is connected to the servers. + verifyDurableClientPresent(VERY_LONG_DURABLE_TIMEOUT_SECONDS, durableClientId, server1VM); + if (redundancyLevel == 1) { + verifyDurableClientPresent(VERY_LONG_DURABLE_TIMEOUT_SECONDS, durableClientId, server2VM); + } // Start normal publisher client - publisherClientVM.invoke(() -> CacheServerTestUtil.createCacheClient( + publisherClientVM.invoke(() -> createCacheClient( getClientPool(NetworkUtils.getServerHostName(), server1Port, server2Port, false), regionName)); - // Publish some entries - publishEntries(0, 1); + // put key 0 + publishEntries(publisherClientVM, 0, 1); - // Verify the durable client received the updates + // Verify the durable client received key 0 checkListenerEvents(1, 1, -1, durableClientVM); - verifyDurableClientPresent(VERY_LONG_DURABLE_TIMEOUT_SECONDS, durableClientId, server1VM); + // Wait to until the HARegionQueue has emptied before disconnecting the Durable client + // to avoid having left over messages that processed, in particular, the key 0 message + waitUntilHARegionQueueSizeIsZero(server1VM); Review Comment: Wait for the HA region queues to clear before disconnecting the durable client we want to process all the messages first, then disconnect, otherwise we will see them again when the client restarts. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@geode.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org