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)