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
+ */);
}
}
}