[geode] 01/01: GEODE-5166: NPE thrown while processing InitialImage of subscription region

2018-05-04 Thread ladyvader
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-Godfrey 
AuthorDate: 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

2018-05-01 Thread ladyvader
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-Godfrey 
AuthorDate: 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 {
-