diff --git a/hazelcast-client/src/main/java/com/hazelcast/client/connection/nio/ClientConnectionManagerImpl.java b/hazelcast-client/src/main/java/com/hazelcast/client/connection/nio/ClientConnectionManagerImpl.java index 56bc88a76abc..b05197558354 100644 --- a/hazelcast-client/src/main/java/com/hazelcast/client/connection/nio/ClientConnectionManagerImpl.java +++ b/hazelcast-client/src/main/java/com/hazelcast/client/connection/nio/ClientConnectionManagerImpl.java @@ -19,6 +19,7 @@ import com.hazelcast.client.AuthenticationException; import com.hazelcast.client.ClientExtension; import com.hazelcast.client.ClientTypes; +import com.hazelcast.client.HazelcastClientNotActiveException; import com.hazelcast.client.HazelcastClientOfflineException; import com.hazelcast.client.config.ClientNetworkConfig; import com.hazelcast.client.config.SocketOptions; @@ -377,6 +378,9 @@ private Connection getConnection(Address target, boolean asOwner, boolean acquir } private void checkAllowed(Address target, boolean asOwner, boolean acquiresResources) throws IOException { + if (!alive) { + throw new HazelcastClientNotActiveException("ConnectionManager is not active!"); + } if (asOwner) { //opening an owner connection is always allowed return; @@ -435,9 +439,6 @@ private AuthenticationFuture triggerConnect(Address target, boolean asOwner) { if (!asOwner) { connectionStrategy.beforeOpenConnection(target); } - if (!alive) { - throw new HazelcastException("ConnectionManager is not active!"); - } AuthenticationFuture future = new AuthenticationFuture(); AuthenticationFuture oldFuture = connectionsInProgress.putIfAbsent(target, future); @@ -561,9 +562,6 @@ private void bindSocketToPort(Socket socket) throws IOException { } protected ClientConnection createSocketConnection(final Address address) throws IOException { - if (!alive) { - throw new HazelcastException("ConnectionManager is not active!"); - } SocketChannel socketChannel = null; try { socketChannel = SocketChannel.open(); diff --git a/hazelcast-client/src/test/java/com/hazelcast/client/ClientReconnectTest.java b/hazelcast-client/src/test/java/com/hazelcast/client/ClientReconnectTest.java index fb97ebf9dc35..9524f1656ddd 100644 --- a/hazelcast-client/src/test/java/com/hazelcast/client/ClientReconnectTest.java +++ b/hazelcast-client/src/test/java/com/hazelcast/client/ClientReconnectTest.java @@ -153,7 +153,7 @@ public void testRequestShouldFailOnShutdown() { } @Test(expected = HazelcastClientNotActiveException.class) - public void testExceptionAfterClientShutdown() throws Exception { + public void testExceptionAfterClientShutdown() { hazelcastFactory.newHazelcastInstance(); ClientConfig clientConfig = new ClientConfig(); HazelcastInstance client = hazelcastFactory.newHazelcastClient(clientConfig); @@ -166,6 +166,18 @@ public void testExceptionAfterClientShutdown() throws Exception { test.get("key"); } + @Test(expected = HazelcastClientNotActiveException.class) + public void testExceptionAfterClientShutdown_fromClientConnectionManager() { + hazelcastFactory.newHazelcastInstance(); + ClientConfig clientConfig = new ClientConfig(); + HazelcastInstance client = hazelcastFactory.newHazelcastClient(clientConfig); + + IMap test = client.getMap("test"); + test.put("key", "value"); + client.shutdown(); + test.size(); + } + @Test public void testShutdownClient_whenThereIsNoCluster() { ClientConfig clientConfig = new ClientConfig();