[geode] 01/01: GEODE-5166: NPE thrown while processing InitialImage of subscription region
This is an automated email from the ASF dual-hosted git repository. ladyvader pushed a commit to branch feature/GEODE-5166 in repository https://gitbox.apache.org/repos/asf/geode.git commit aed333beeda12fb1bdb6dba7cb620e3cfee6081a Author: Lynn Hughes-GodfreyAuthorDate: Tue May 1 16:35:28 2018 -0700 GEODE-5166: NPE thrown while processing InitialImage of subscription region * Fix NPE in updateHAEventWrapper * Clean up code (renaming variables) in putEventInHARegion * Removing old/commented out code --- .../geode/internal/cache/ha/HARegionQueue.java | 114 +++-- 1 file changed, 38 insertions(+), 76 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java b/geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java index 9e0b38c..a49adfb 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java @@ -2107,40 +2107,23 @@ public class HARegionQueue implements RegionQueue { continue; } synchronized (entryHaEventWrapper) { -if (haContainer.getKey(entryHaEventWrapper) != null) { +if ((HAEventWrapper) haContainer.getKey(entryHaEventWrapper) != null) { entryHaEventWrapper.incAndGetReferenceCount(); - // If the input and entry HAEventWrappers are not the same (which is the normal - // case), add the CQs and interest list from the input to the entry and create a new - // value from the entry. - if (entryHaEventWrapper != inputHaEventWrapper) { // See GEODE-4957 -addClientCQsAndInterestList(entryMessage, inputHaEventWrapper, haContainer, -regionName); -inputHaEventWrapper.setClientUpdateMessage(null); -newValueCd = -new VMCachedDeserializable(entryHaEventWrapper, newValueCd.getSizeInBytes()); - } -} else { - entryHaEventWrapper = null; -} - } -} else { // putIfAbsent successful - entryHaEventWrapper = (HAEventWrapper) haContainer.getKey(inputHaEventWrapper); - synchronized (entryHaEventWrapper) { -entryHaEventWrapper.incAndGetReferenceCount(); -entryHaEventWrapper.setHAContainer(haContainer); -// If the input and entry HAEventWrappers are not the same (which is not the normal -// case), get the entry message, add the CQs and interest list from the input to the -// entry and create a new value from the entry. -if (entryHaEventWrapper != inputHaEventWrapper) { // See GEODE-4957 - entryMessage = (ClientUpdateMessageImpl) haContainer.get(inputHaEventWrapper); addClientCQsAndInterestList(entryMessage, inputHaEventWrapper, haContainer, regionName); inputHaEventWrapper.setClientUpdateMessage(null); newValueCd = new VMCachedDeserializable(entryHaEventWrapper, newValueCd.getSizeInBytes()); +} else { + entryHaEventWrapper = null; } -entryHaEventWrapper.setClientUpdateMessage(null); -entryHaEventWrapper.setIsRefFromHAContainer(true); + } +} else { // putIfAbsent successful + synchronized (inputHaEventWrapper) { +inputHaEventWrapper.incAndGetReferenceCount(); +inputHaEventWrapper.setHAContainer(haContainer); +inputHaEventWrapper.setClientUpdateMessage(null); +inputHaEventWrapper.setIsRefFromHAContainer(true); } break; } @@ -3443,76 +3426,55 @@ public class HARegionQueue implements RegionQueue { */ protected void putEventInHARegion(Conflatable event, Long position) { if (event instanceof HAEventWrapper) { - HAEventWrapper haEventWrapper = (HAEventWrapper) event; + HAEventWrapper inputHaEventWrapper = (HAEventWrapper) event; if (this.isQueueInitialized()) { -if (haEventWrapper.getIsRefFromHAContainer()) { - putEntryConditionallyIntoHAContainer(haEventWrapper); +if (inputHaEventWrapper.getIsRefFromHAContainer()) { + putEntryConditionallyIntoHAContainer(inputHaEventWrapper); } else { - // This means that the haEvenWrapper reference we have is not + // This means that the haEventWrapper reference we have is not // authentic, i.e. it doesn't refer to the HAEventWrapper instance // in the haContainer, but to the one outside it. - boolean entryFound; - // synchronized (this.haContainer) { - HAEventWrapper original = null; + HAEventWrapper haContainerKey = null; do { -
[geode] 01/01: GEODE-5166: NPE thrown while processing InitialImage of subscription region
This is an automated email from the ASF dual-hosted git repository. ladyvader pushed a commit to branch feature/GEODE-5166 in repository https://gitbox.apache.org/repos/asf/geode.git commit ed3d10c011417e1c7a7056d2716a8244ff235c5a Author: Lynn Hughes-GodfreyAuthorDate: Tue May 1 16:35:28 2018 -0700 GEODE-5166: NPE thrown while processing InitialImage of subscription region * Fix NPE in updateHAEventWrapper * Clean up code (renaming variables) in putEventInHARegion * Removing old/commented out code --- .../geode/internal/cache/ha/HARegionQueue.java | 114 +++-- 1 file changed, 38 insertions(+), 76 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java b/geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java index 9e0b38c..a49adfb 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/ha/HARegionQueue.java @@ -2107,40 +2107,23 @@ public class HARegionQueue implements RegionQueue { continue; } synchronized (entryHaEventWrapper) { -if (haContainer.getKey(entryHaEventWrapper) != null) { +if ((HAEventWrapper) haContainer.getKey(entryHaEventWrapper) != null) { entryHaEventWrapper.incAndGetReferenceCount(); - // If the input and entry HAEventWrappers are not the same (which is the normal - // case), add the CQs and interest list from the input to the entry and create a new - // value from the entry. - if (entryHaEventWrapper != inputHaEventWrapper) { // See GEODE-4957 -addClientCQsAndInterestList(entryMessage, inputHaEventWrapper, haContainer, -regionName); -inputHaEventWrapper.setClientUpdateMessage(null); -newValueCd = -new VMCachedDeserializable(entryHaEventWrapper, newValueCd.getSizeInBytes()); - } -} else { - entryHaEventWrapper = null; -} - } -} else { // putIfAbsent successful - entryHaEventWrapper = (HAEventWrapper) haContainer.getKey(inputHaEventWrapper); - synchronized (entryHaEventWrapper) { -entryHaEventWrapper.incAndGetReferenceCount(); -entryHaEventWrapper.setHAContainer(haContainer); -// If the input and entry HAEventWrappers are not the same (which is not the normal -// case), get the entry message, add the CQs and interest list from the input to the -// entry and create a new value from the entry. -if (entryHaEventWrapper != inputHaEventWrapper) { // See GEODE-4957 - entryMessage = (ClientUpdateMessageImpl) haContainer.get(inputHaEventWrapper); addClientCQsAndInterestList(entryMessage, inputHaEventWrapper, haContainer, regionName); inputHaEventWrapper.setClientUpdateMessage(null); newValueCd = new VMCachedDeserializable(entryHaEventWrapper, newValueCd.getSizeInBytes()); +} else { + entryHaEventWrapper = null; } -entryHaEventWrapper.setClientUpdateMessage(null); -entryHaEventWrapper.setIsRefFromHAContainer(true); + } +} else { // putIfAbsent successful + synchronized (inputHaEventWrapper) { +inputHaEventWrapper.incAndGetReferenceCount(); +inputHaEventWrapper.setHAContainer(haContainer); +inputHaEventWrapper.setClientUpdateMessage(null); +inputHaEventWrapper.setIsRefFromHAContainer(true); } break; } @@ -3443,76 +3426,55 @@ public class HARegionQueue implements RegionQueue { */ protected void putEventInHARegion(Conflatable event, Long position) { if (event instanceof HAEventWrapper) { - HAEventWrapper haEventWrapper = (HAEventWrapper) event; + HAEventWrapper inputHaEventWrapper = (HAEventWrapper) event; if (this.isQueueInitialized()) { -if (haEventWrapper.getIsRefFromHAContainer()) { - putEntryConditionallyIntoHAContainer(haEventWrapper); +if (inputHaEventWrapper.getIsRefFromHAContainer()) { + putEntryConditionallyIntoHAContainer(inputHaEventWrapper); } else { - // This means that the haEvenWrapper reference we have is not + // This means that the haEventWrapper reference we have is not // authentic, i.e. it doesn't refer to the HAEventWrapper instance // in the haContainer, but to the one outside it. - boolean entryFound; - // synchronized (this.haContainer) { - HAEventWrapper original = null; + HAEventWrapper haContainerKey = null; do { -