{"push_id":799495636,"size":1,"distinct_size":1,"ref":"refs/heads/clientListenerRemoveRetryable/master","head":"7a10e5a29a477af768a1fd636ec48168ff26bae5","before":"e7ca703e783b09738390c4bcda63a0dd818dbb01","commits":[{"sha":"7a10e5a29a477af768a1fd636ec48168ff26bae5","author":{"email":"0760a11abb4d2b52db3017e29404de05d6efe12b@hazelcast.com","name":"sancar"},"message":"Makes all listener remove requests retyable\n\nIssue seen in https://github.com/hazelcast/hazelcast/issues/6264\nAn internal listener remove fails with exception because the node that it tries to run the request on is no longer available. I decided to make client listener remove requests retryable to solve the problem. In hazelcast client, only idompotent operations are retyable. Listener remove request are also idempotent since they run twice they do not get any exception and second call just returns silently, except when they are not. Only thing that is changes when remove request runs twice is its response. If first call is succesfull and then we lose the connection, the second retry will return false. This will lead to wrong response to user when request is made retyable. To overcome that, a second change is made so that remove listener is always returns true to user without looking at what is returned from remote. Any response other than exception means listener is removed succesfully.\n\nA second small fix in ClientMembershipListener. The call applying 'member remove' to the member list is moved before related connections are destroyed, because when a connection is destroyed it will be retried(if retriable), on a member in memberlist And we dont want to retry on a member that will already know that is dead.\n\nfixes https://github.com/hazelcast/hazelcast/issues/6264","distinct":true,"url":"https://api.github.com/repos/sancar/hazelcast/commits/7a10e5a29a477af768a1fd636ec48168ff26bae5"}]}