Hi All,
I want to understand the Client-Cache Behavior after for some reason
server is getting reconnected due to ForcedDisconnectException.
1. Do I need to create client cache again, and Regions ?
I tried to write following Tests but it is failing , Please help.
private void forcedDisconnectAndReconnectEachVM() {
new ArrayList<>(Arrays.asList(vm0/*, vm1, vm2*/)).
forEach((VM) -> VM.invoke(new SerializableCallable() {
@Override
public Object call() throws Exception {
GemFireCacheImpl oldCache = (GemFireCacheImpl)
CacheFactory.getAnyInstance();
assertNotNull(oldCache);
InternalDistributedSystem distributedSystem =
(InternalDistributedSystem) oldCache.getDistributedSystem();
assertNotNull(distributedSystem);
MembershipManagerHelper.crashDistributedSystem(distributedSystem);
return null;
}
}));
}
private void updateServerCacheAfterReconnect() {
new ArrayList<>(Arrays.asList(vm0/*, vm1, vm2*/)).
forEach((VM) -> VM.invoke(new SerializableCallable() {
@Override
public Object call() throws Exception {
Cache cache = CacheFactory.getAnyInstance();
cache = cache.getReconnectedCache();
return null;
}
}));
}
public void testForcedDisconnectException() {
createRegionInEachVM();
ClientCache clientCache = ClientCacheFactory.getAnyInstance();
ClientRegionFactory<String, String> crf =
clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY);
Region<String, String> test_pr_region = crf.create("TEST_PR_REGION");
for (int i = 0; i < 10; i++) {
test_pr_region.put("Key" + i, "Value" + i);
}
forcedDisconnectAndReconnectEachVM();
updateServerCacheAfterReconnect();
createRegionInEachVM();
for (int i = 0; i < 10; i++) {
final String s = test_pr_region.get("Key" + i);
assertEquals("Value" + i , s);
}
}