Hi,
These months I have been tackling a series of issues having to do with several 
inconsistencies in the geode-native client after a cluster restore.
The later one has to do with subscription notification and cached regions. The 
scenario is as follows:

  1.  Start the cluster and the clients. For clarification purposes let's say 
we have a NC and a Java client. Being the NC the local client, and Java client 
the external one.
Also note that NC client has subscription notification enabled for its pool and 
the region has caching enabled.
  2.  Register interest for all the region entries.
  3.  Write some entries into the region from the Java client. Notifications 
are received in the NC client and entries cached.
  4.  Take a backup of the disk-stores.
  5.  Write/modify some entries with the Java client. Notifications are 
received in the NC client and entries cached.
  6.  Restore the previous backup.
  7.  Write/modify some entries with the Java client. Some of the notifications 
are discarded and some others not.
Note that all the entries which notifications were ignored did not exist in the 
step 4 of the scenario.

The reason why notifications mentioned in step 7 are ignored is due to the 
following log:
"Region::localUpdate: updateNoThrow<Region::put> for key [<redacted>] failed 
because the cache already contains an entry with higher version. The cache 
listener will not be invoked"

So, first of, I wanted to ask:

  *   Any of you have encountered this issue before? How did you tackle it?
  *   Is there any mechanism in the Java client to avoid this kind of issues 
with caching de-sync? Note that I did not found any
  *   Maybe we should add an option to clear local cached regions after 
connection is lost towards the cluster in the same way is done with 
PdxTypeRegistry?
  *   Maybe any other solution having to do with cluster versioning?

BR,
Mario.

Reply via email to