You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by zh...@apache.org on 2017/03/17 21:59:14 UTC

geode git commit: GEODE-2683: let BR.putAll/removeAll to distribute before notify gateway, which is the same order as put/destroy

Repository: geode
Updated Branches:
  refs/heads/develop 400552a10 -> 1036259ec


GEODE-2683: let BR.putAll/removeAll to distribute before notify gateway, which
is the same order as put/destroy


Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/1036259e
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/1036259e
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/1036259e

Branch: refs/heads/develop
Commit: 1036259eca5cabd84dbe94da4043b8f266f2b6e6
Parents: 400552a
Author: zhouxh <gz...@pivotal.io>
Authored: Fri Mar 17 14:37:10 2017 -0700
Committer: zhouxh <gz...@pivotal.io>
Committed: Fri Mar 17 14:38:22 2017 -0700

----------------------------------------------------------------------
 .../geode/internal/cache/LocalRegion.java       | 39 ++++++++++++++------
 1 file changed, 28 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/1036259e/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
index 5d5c7e2..45540ee 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
@@ -5908,8 +5908,15 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
         doCallback = true;
       }
       if (doCallback) {
-        notifyGatewaySender(event.getOperation().isUpdate() ? EnumListenerEvent.AFTER_UPDATE
-            : EnumListenerEvent.AFTER_CREATE, event);
+        if (event.isBulkOpInProgress() && this.isUsedForPartitionedRegionBucket) {
+          if (logger.isDebugEnabled()) {
+            logger.debug(
+                "For bulk operation on bucket region, not to notify gateway sender earlier.");
+          }
+        } else {
+          notifyGatewaySender(event.getOperation().isUpdate() ? EnumListenerEvent.AFTER_UPDATE
+              : EnumListenerEvent.AFTER_CREATE, event);
+        }
         // Notify listeners
         if (!event.isBulkOpInProgress()) {
           try {
@@ -6968,7 +6975,13 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
      * throw new IndexMaintenanceException(e); } } }
      */
 
-    notifyGatewaySender(EnumListenerEvent.AFTER_DESTROY, event);
+    if (event.isBulkOpInProgress() && this.isUsedForPartitionedRegionBucket) {
+      if (logger.isDebugEnabled()) {
+        logger.debug("For bulk operation on bucket region, not to notify gateway sender earlier.");
+      }
+    } else {
+      notifyGatewaySender(EnumListenerEvent.AFTER_DESTROY, event);
+    }
 
     // invoke callbacks if initialized and told to do so, or if this
     // is a bucket in a partitioned region
@@ -10406,10 +10419,12 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
         EnumListenerEvent op = event.getOperation().isCreate() ? EnumListenerEvent.AFTER_CREATE
             : EnumListenerEvent.AFTER_UPDATE;
         invokePutCallbacks(op, event, !event.callbacksInvoked() && !event.isPossibleDuplicate(),
-            false /*
-                   * We must notify gateways inside RegionEntry lock, NOT here, to preserve the
-                   * order of events sent by gateways for same key
-                   */);
+            this.isUsedForPartitionedRegionBucket
+        /*
+         * If this is replicated region, use "false". We must notify gateways inside RegionEntry
+         * lock, NOT here, to preserve the order of events sent by gateways for same key. If this is
+         * bucket region, use "true", because the event order is guaranteed
+         */);
       }
     }
   }
@@ -10433,10 +10448,12 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
       if (successfulKeys.contains(event.getKey())) {
         invokeDestroyCallbacks(EnumListenerEvent.AFTER_DESTROY, event,
             !event.callbacksInvoked() && !event.isPossibleDuplicate(),
-            false /*
-                   * We must notify gateways inside RegionEntry lock, NOT here, to preserve the
-                   * order of events sent by gateways for same key
-                   */);
+            this.isUsedForPartitionedRegionBucket
+        /*
+         * If this is replicated region, use "false". We must notify gateways inside RegionEntry
+         * lock, NOT here, to preserve the order of events sent by gateways for same key. If this is
+         * bucket region, use "true", because the event order is guaranteed
+         */);
       }
     }
   }