This is an automated email from the ASF dual-hosted git repository. zhouxj pushed a commit to branch feature/GEODE-7857 in repository https://gitbox.apache.org/repos/asf/geode.git
commit cc32e722197037d408509ea13b49087ca898455f Author: zhouxh <gz...@pivotal.io> AuthorDate: Mon Mar 9 10:44:49 2020 -0700 GEODE-7857: PR.clear's event id should be created and used in BR --- .../cache/PartitionedRegionPersistentClearDUnitTest.java | 2 +- .../geode/codeAnalysis/sanctionedDataSerializables.txt | 4 ++-- .../org/apache/geode/internal/cache/PartitionedRegion.java | 6 +++--- .../geode/internal/cache/partitioned/ClearPRMessage.java | 12 ++++++++---- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionPersistentClearDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionPersistentClearDUnitTest.java index 847699b..c758446 100644 --- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionPersistentClearDUnitTest.java +++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/PartitionedRegionPersistentClearDUnitTest.java @@ -21,6 +21,6 @@ import org.apache.geode.cache.RegionShortcut; public class PartitionedRegionPersistentClearDUnitTest extends PartitionedRegionClearDUnitTest { protected RegionShortcut getRegionShortCut() { - return RegionShortcut.PARTITION_REDUNDANT_PERSISTENT_OVERFLOW; + return RegionShortcut.PARTITION_REDUNDANT_PERSISTENT; } } diff --git a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt index cacc46b..53be9e8 100644 --- a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt +++ b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt @@ -1436,8 +1436,8 @@ fromData,27 toData,27 org/apache/geode/internal/cache/partitioned/ClearPRMessage,2 -fromData,19 -toData,36 +fromData,30 +toData,44 org/apache/geode/internal/cache/partitioned/ClearPRMessage$ClearReplyMessage,2 fromData,17 diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java index 9f61202..9d5322b 100755 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/PartitionedRegion.java @@ -2162,7 +2162,7 @@ public class PartitionedRegion extends LocalRegion } // create ClearPRMessage per bucket - List<ClearPRMessage> clearMsgList = createClearPRMessages(); + List<ClearPRMessage> clearMsgList = createClearPRMessages(regionEvent.getEventId()); for (ClearPRMessage clearPRMessage : clearMsgList) { int bucketId = clearPRMessage.getBucketId(); checkReadiness(); @@ -2334,10 +2334,10 @@ public class PartitionedRegion extends LocalRegion } } - List<ClearPRMessage> createClearPRMessages() { + List<ClearPRMessage> createClearPRMessages(EventID eventID) { ArrayList<ClearPRMessage> clearMsgList = new ArrayList<>(); for (int bucketId = 0; bucketId < this.totalNumberOfBuckets; bucketId++) { - ClearPRMessage clearPRMessage = new ClearPRMessage(bucketId); + ClearPRMessage clearPRMessage = new ClearPRMessage(bucketId, eventID); clearMsgList.add(clearPRMessage); } return clearMsgList; diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ClearPRMessage.java b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ClearPRMessage.java index 9fa8057..cc01920 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ClearPRMessage.java +++ b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ClearPRMessage.java @@ -56,6 +56,8 @@ public class ClearPRMessage extends PartitionMessageWithDirectReply { private Integer bucketId; + private EventID eventID; + public static final String BUCKET_NON_PRIMARY_MESSAGE = "The bucket region on target member is no longer primary"; public static final String EXCEPTION_THROWN_DURING_CLEAR_OPERATION = @@ -71,8 +73,9 @@ public class ClearPRMessage extends PartitionMessageWithDirectReply { */ public ClearPRMessage() {} - public ClearPRMessage(int bucketId) { + public ClearPRMessage(int bucketId, EventID eventID) { this.bucketId = bucketId; + this.eventID = eventID; } public void initMessage(PartitionedRegion region, Set<InternalDistributedMember> recipients, @@ -119,6 +122,7 @@ public class ClearPRMessage extends PartitionMessageWithDirectReply { } else { InternalDataSerializer.writeSignedVL(bucketId, out); } + DataSerializer.writeObject(this.eventID, out); } @Override @@ -126,6 +130,7 @@ public class ClearPRMessage extends PartitionMessageWithDirectReply { throws IOException, ClassNotFoundException { super.fromData(in, context); this.bucketId = (int) InternalDataSerializer.readSignedVL(in); + this.eventID = (EventID) DataSerializer.readObject(in); } @Override @@ -168,9 +173,8 @@ public class ClearPRMessage extends PartitionMessageWithDirectReply { throw new ForceReattemptException(BUCKET_NON_PRIMARY_MESSAGE); } try { - RegionEventImpl regionEvent = new RegionEventImpl(); - regionEvent.setOperation(Operation.REGION_CLEAR); - regionEvent.setRegion(bucketRegion); + RegionEventImpl regionEvent = new RegionEventImpl(bucketRegion, Operation.REGION_CLEAR, null, + false, region.getMyId(), eventID); bucketRegion.cmnClearRegion(regionEvent, true, true); } catch (PartitionOfflineException poe) { logger.info(