Hi all,
Could you please help me understand behavior of the native client when
configured as durable?
I have been working on a bug GEODE-7944
<https://issues.apache.org/jira/browse/GEODE-7944> which results with
exception "Unable to deserialize membership id java.io.EOFException" on
locator only when debug is enabled. This happens because native client,
only when subscription is enabled, sends towards locator
QueueConnectionRequest that doesn't encapsulate ClientProxyMembershipID
(not properly serialized) and therefore exception occurs when locator
tries to deserialize membership id to log it at debug level.
I was trying to figure out why would locator need
ClientProxyMembershipID from native client and found following paragraph
in the documentation (copied from
https://geode.apache.org/docs/geode-native/cpp/112/connection-pools/subscription-properties.html):
/For durable subscriptions, the server locator must be able to
locate the servers that host the queues for the durable client. When
a durable client sends a request, the server locator queries all the
available servers to see if they are hosting the subscription region
queue for the durable client. If the server is located, the client
is connected to the server hosting the subscription region queue./
Locator behaves as described in above paragraph only when it receives
///QueueConnectionRequest with ///findDurable flag set to "true" //and
with valid membership i//d. //I noticed that unlike java client, the
native client always sets //findDurable// to //"false" //and therefore
locator will never behave as described in above paragraph when native
client is used.
Does anybody know why native client always sets //findDurable=false//?
BRs,
Jakov