hazelcast / hazelcast/hazelcast-cpp-client

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

Open
#1,015 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
91
Forks
54
Avg merge
1d 12m
Merged PRs (30d)
5

Description

The tracking issue for the Java side PR.

See https://github.com/hazelcast/hazelcast/pull/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: https://github.com/hazelcast/hazelcast-client-protocol/pull/437

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.