@Test public void retryAfterConnectionIsDisconnected() throws Exception { RedisAsyncConnection<String, String> connection = client.connectAsync(); RedisChannelHandler<String, String> redisChannelHandler = (RedisChannelHandler) connection.getStatefulConnection(); RedisCommands<String, String> verificationConnection = client.connect().sync(); connection.set(key, "1").get(); ConnectionWatchdog connectionWatchdog = Connections.getConnectionWatchdog(connection.getStatefulConnection()); connectionWatchdog.setListenOnChannelInactive(false); connection.quit(); while (connection.isOpen()) { Thread.sleep(100); } assertThat(connection.incr(key).await(1, TimeUnit.SECONDS)).isFalse(); assertThat(verificationConnection.get("key")).isEqualTo("1"); assertThat(getQueue(redisChannelHandler)).isEmpty(); assertThat(getCommandBuffer(redisChannelHandler).size()).isGreaterThan(0); connectionWatchdog.setListenOnChannelInactive(true); connectionWatchdog.scheduleReconnect(); while (!getCommandBuffer(redisChannelHandler).isEmpty() || !getQueue(redisChannelHandler).isEmpty()) { Thread.sleep(10); } assertThat(connection.get(key).get()).isEqualTo("2"); assertThat(verificationConnection.get(key)).isEqualTo("2"); connection.close(); verificationConnection.close(); }