Description
Using gfsh alter region or an AttributesMutator to modify the entry time-to-live or idle-timeout on a partitioned region that is colocated with another partitioned region results in a rebalance that is very slow, and loses redundancy as the rebalance goes on.
The core problem is that these modifications wipe out the isColocationComplete flag in the PartitionedRegionConfig for that region because they create a brand new PartitionedRegionConfig in this part of PartitionedRegion.
private PartitionRegionConfig getPRConfigWithLatestExpirationAttributes() { PartitionRegionConfig prConfig = getPRRoot().get(getRegionIdentifier()); return new PartitionRegionConfig(prConfig.getPRId(), prConfig.getFullPath(), prConfig.getPartitionAttrs(), prConfig.getScope(), prConfig.getEvictionAttributes(), this.getRegionIdleTimeout(), this.getRegionTimeToLive(), this.getEntryIdleTimeout(), this.getEntryTimeToLive(), prConfig.getGatewaySenderIds()); }
If that flag is false, we don't create new buckets in these regions. Therefore, moving a bucket by copying the bucket and removing the old copy is failing to copy the colocated bucket.
Attachments
Issue Links
- links to