hazelcast/hazelcast-python-client

[TRACKING ISSUE] [API-1552] Do not invoke urgent invocations that contains serialized data immediately

hz-devops-test opened this issue · 0 comments

The tracking issue for the Java side PR.

See hazelcast/hazelcast#22293 for details.


Although we believe it was a mistake, the urgent invocations on the
client-side are used for some user invocations like listener registrations,
apart from the actual urgent invocations like heartbeats, authentication, etc.

When the client reconnects to some cluster, it sends the local state
in some executor. So, there might be some time between the local state is
sent. However, during that time, urgent invocations are allowed to
go through from the client. That might violate our assumption that
the schema is received by the cluster before the data.

To solve this, we will not invoke urgent invocations that contain
serialized data if the client is not initialized on the cluster, and there
were some compact schemas sent to the previous clusters. Such
invocations are only related to user invocations so we will not delay
invoking actual urgent invocations like heartbeats.

This PR also serializes custom credentials with the schema-in-binary format
as there is no way to send Compact schemas before the authentication.

protocol PR: hazelcast/hazelcast-client-protocol#437