hazelcast / hazelcast-python-client

Hazelcast Python Client
https://hazelcast.com/clients/python/
Apache License 2.0
111 stars 73 forks source link

[TRACKING ISSUE] Enabled ClientStateListener to be used on FailoverClient #433

Closed hz-devops-test closed 3 years ago

hz-devops-test commented 3 years ago

The tracking issue for the Java side PR.

See https://github.com/hazelcast/hazelcast/pull/19090 for details.


Due to nature of how failover client works, we don't allow different listeners to be registered at different client configs.

Since ClientStateListener registers itself to the ClientConfig, this prevents it to be used via FailoverClient.

The reasoning behind constructor register itself is to force the user to use this via config rather than registering it after client starts.

So, sticking with the same decision we introduce another constructor which accepts ClientFailoverConfig and registers same listener(itself) to all the client configs.

Also on the ClientStateListener I have ignored CLIENT_CHANGED_CLUSTER. This is rather a temporal event. We fire CLIENT_CONNECTED than CLIENT_CHANGED_CLUSTER, in those cases we want the current state to remain CLIENT_CONNECTED.

Fixes https://github.com/hazelcast/hazelcast/issues/18351

EE PR: #NNNN (link to enterprise counterpart PR)

Checklist:

mdumandag commented 3 years ago

Not applicable to Python client as we don't have the failover logic and the client state listener