I need to check if Hazelcast client is connected to cluster.
The way I'm trying to do this
ClientConfig clientConfig = new XmlClientConfigBuilder(xmlConfigurationFileName).build();
ClientStateListener clientStateListener = new ClientStateListener(clientConfig);
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
final boolean connected = clientStateListener.isConnected();
final boolean started = clientStateListener.isStarted();
isStarted method return true, but isConnected always false. Between isConnected checking I'm putting and getting data from server cluster, so client is connected for sure (which I can see also in logs) - also when I'm setting asynchronous on false (async-start="false") then isConnected is returning true.
LifecycleServiceImpl Hazelcast class contains in fireLifecycleEvent method (called in HZ when status is changing) such code
executor.execute(new Runnable() {
@Override
public void run() {
for (LifecycleListener lifecycleListener : lifecycleListeners.values()) {
lifecycleListener.stateChanged(lifecycleEvent);
}
}
});
In synchronous mode run was called each time (twice STARTING->STARTED and STARTED->CLIENT_CONNECTED). In asynchronous only once (STARTING->STARTED).
Hazelcast version 3.12.1.
This is whole configuration (server discovery strategy by tcp-ip)
<?xml version="1.0" encoding="UTF-8"?>
<hazelcast-client xmlns="http://www.hazelcast.com/schema/client-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.hazelcast.com/schema/client-config
http://www.hazelcast.com/schema/client-config/hazelcast-client-config-3.12.xsd">
<group>
<name>hazelcast-group</name>
</group>
<network>
<cluster-members>
<address>XXXXXXXXXXXXXXX:XXXX</address>
<address>XXXXXXXXXXXXXXX:XXXX</address>
<address>XXXXXXXXXXXXXXX:XXXX</address>
<address>XXXXXXXXXXXXXXX:XXXX</address>
</cluster-members>
</network>
<connection-strategy async-start="true" reconnect-mode="ASYNC">
<connection-retry enabled="true">
<initial-backoff-millis>2000</initial-backoff-millis>
<max-backoff-millis>60000</max-backoff-millis>
<multiplier>3</multiplier>
<fail-on-max-backoff>false</fail-on-max-backoff>
<jitter>0.5</jitter>
</connection-retry>
</connection-strategy>
</hazelcast-client>
All logs from Hazelcast client start:
Jul 02, 2019 2:00:42 PM com.hazelcast.client.HazelcastClient
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] A non-empty group password is configured for the Hazelcast client. Starting with Hazelcast version 3.11, clients with the same group name, but with different group passwords (that do not use authentication) will be accepted to a cluster. The group password configuration will be removed completely in a future release.
Jul 02, 2019 2:00:43 PM com.hazelcast.client.spi.ClientInvocationService
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Running with 2 response threads, dynamic=false
Jul 02, 2019 2:00:43 PM com.hazelcast.core.LifecycleService
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] HazelcastClient 3.12.1 (20190611 - 0a0ee66) is STARTING
Jul 02, 2019 2:00:43 PM com.hazelcast.core.LifecycleService
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] HazelcastClient 3.12.1 (20190611 - 0a0ee66) is STARTED
Jul 02, 2019 2:00:44 PM com.hazelcast.internal.diagnostics.Diagnostics
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Diagnostics disabled. To enable add -Dhazelcast.diagnostics.enabled=true to the JVM arguments.
Jul 02, 2019 2:00:44 PM com.hazelcast.client.connection.nio.ClusterConnectorService
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Trying to connect to cluster with name: hazelcast-cache-group
Jul 02, 2019 2:00:44 PM com.hazelcast.client.connection.nio.ClusterConnectorService
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Trying to connect to [FFFFFFFFF]:PORTXXXX as owner member
Jul 02, 2019 2:00:44 PM com.hazelcast.client.connection.ClientConnectionManager
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Setting ClientConnection{alive=true, connectionId=1, channel=NioChannel{/CLIENT-IP:58235->FFFFFFFFF/IPFFF:PORTXXXX}, remoteEndpoint=[FFFFFFFFF]:PORTXXXX, lastReadTime=2019-07-02 14:00:44.898, lastWriteTime=2019-07-02 14:00:44.711, closedTime=never, connected server version=3.12.1} as owner with principal ClientPrincipal{uuid='8090fecb-294f-4a4a-9da7-168bf0a7faff', ownerUuid='TOKEN-FFFFFFFFF'}
Jul 02, 2019 2:00:44 PM com.hazelcast.client.connection.ClientConnectionManager
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Authenticated with server [FFFFFFFFF]:PORTXXXX, server version:3.12.1 Local address: /CLIENT-IP:58235
Jul 02, 2019 2:00:45 PM com.hazelcast.client.spi.impl.ClientMembershipListener
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1]
Members [6] {
Member [AAAAAAAAA]:PORTXXXX - TOKEN-AAAAAAAAA
Member [BBBBBBBBB]:PORTXXXX - TOKEN-BBBBBBBBB
Member [CCCCCCCCC]:PORTXXXX - TOKEN-CCCCCCCCC
Member [DDDDDDDDD]:PORTXXXX - TOKEN-DDDDDDDDD
Member [EEEEEEEEE]:PORTXXXX - TOKEN-EEEEEEEEE
Member [FFFFFFFFF]:PORTXXXX - TOKEN-FFFFFFFFF
}
Jul 02, 2019 2:00:45 PM com.hazelcast.core.LifecycleService
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] HazelcastClient 3.12.1 (20190611 - 0a0ee66) is CLIENT_CONNECTED
Jul 02, 2019 2:00:45 PM com.hazelcast.client.connection.ClientConnectionManager
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Authenticated with server [AAAAAAAAA]:PORTXXXX, server version:3.12.1 Local address: /CLIENT-IP:58238
Jul 02, 2019 2:00:45 PM com.hazelcast.client.connection.ClientConnectionManager
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Authenticated with server [BBBBBBBBB]:PORTXXXX, server version:3.12.1 Local address: /CLIENT-IP:58236
Jul 02, 2019 2:00:45 PM com.hazelcast.client.connection.ClientConnectionManager
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Authenticated with server [CCCCCCCCC]:PORTXXXX, server version:3.12.1 Local address: /CLIENT-IP:58237
Jul 02, 2019 2:00:45 PM com.hazelcast.client.connection.ClientConnectionManager
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Authenticated with server [EEEEEEEEE]:PORTXXXX, server version:3.12.1 Local address: /CLIENT-IP:58240
Jul 02, 2019 2:00:45 PM com.hazelcast.client.connection.ClientConnectionManager
INFO: hz.client_0 [hazelcast-cache-group] [3.12.1] Authenticated with server [DDDDDDDDD]:PORTXXXX, server version:3.12.1 Local address: /CLIENT-IP:58239
What should be done to force statusChange for CLIENT_CONNECTED state ?