Leon Finker created GEODE-8785:
----------------------------------
Summary: Geode Client Reconnect and cache incosistency during that
preiod
Key: GEODE-8785
URL: https://issues.apache.org/jira/browse/GEODE-8785
Project: Geode
Issue Type: Bug
Components: client/server
Reporter: Leon Finker
Hi,
We observed an issue with geode client re-connection and cache synchronization.
We have a caching client region. In this region we register interest for keys
(could be .*). Now, when client is reconnecting with the server, at that exact
period, client region loses it's data. That's until it is repopulated again
with interest registration calls and cache sync up. Looking
QueueManagerImpl.recoverSingleKey,
and when primary endpoint recovered, it
issues Region.clearKeysOfInterest then eventually calls
case InterestType.KEY:
if (key instanceof String && key.equals("ALL_KEYS")) {
clearViaRegEx(".*");
...
for (Object o : entrySet(false)) {
...
localDestroyNoCallbacks(entryKey);
This is really unexpected behavior and impossible to deal with. Everyone
would have to either create local disconnected region paired with proxy
empty region and forward events. Or always call keySetOnServer.
In addition, there is no way to know that the region is in this intermediate
state. There is kind of cache global callback, but that's too global:
{color:#cc7832}private void
{color}{color:#ffc66d}recoverAllInterestTypes{color}({color:#cc7832}final
{color}Connection recoveredConnection{color:#cc7832},
{color}{color:#cc7832} boolean {color}isFirstNewConnection) {
{color:#cc7832}if
{color}(PoolImpl.{color:#9876aa}BEFORE_RECOVER_INTEREST_CALLBACK_FLAG{color}) {
ClientServerObserver bo =
ClientServerObserverHolder.getInstance(){color:#cc7832};
{color} bo.beforeInterestRecovery(){color:#cc7832};
{color} }
What can be done to solve this race condition of not having expected data or
having incomplete cache data?
Thank you
--
This message was sent by Atlassian Jira
(v8.3.4#803005)