Skip to content

Commit beab2ab

Browse files
committed
Bug 37385661 - [37217844->14.1.2.0.1] Internal CacheStore operations can result in unsolicited commit events (14.1.2.0 cl 112899 --> ce/14.1.2.0)
[git-p4: depot-paths = "//dev/coherence-ce/release/coherence-ce-v14.1.2.0/": change = 113211]
1 parent 7a4375e commit beab2ab

File tree

1 file changed

+27
-38
lines changed
  • prj/coherence-core-components/src/main/java/com/tangosol/coherence/component/util/daemon/queueProcessor/service/grid/partitionedService

1 file changed

+27
-38
lines changed

prj/coherence-core-components/src/main/java/com/tangosol/coherence/component/util/daemon/queueProcessor/service/grid/partitionedService/PartitionedCache.java

Lines changed: 27 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -20617,20 +20617,17 @@ else if (continuation != null)
2061720617

2061820618
/**
2061920619
* Raise an event (if necessary) signalling that the specified entry is
20620-
* being changed, and complete the specified continuation.
20621-
*
20622-
* Called on a worker or service thread.
20620+
* being changed, and complete the specified continuation.
20621+
* <p>
20622+
* Called on a worker or service thread.
2062320623
*/
2062420624
public void onEntryChanging(Storage.BinaryEntry binEntry, com.oracle.coherence.common.base.Continuation continuation)
2062520625
{
20626-
// import com.tangosol.net.events.partition.cache.EntryEvent$Type as com.tangosol.net.events.partition.cache.EntryEvent.Type;
20627-
// import com.tangosol.net.events.internal.StorageDispatcher as com.tangosol.net.events.internal.StorageDispatcher;
20628-
// import java.util.Collections;
20629-
20630-
com.tangosol.net.events.partition.cache.EntryEvent.Type eventType = null;
20631-
com.tangosol.net.events.internal.StorageDispatcher dispatcher = getStorageDispatcher(binEntry.getStorage());
20626+
com.tangosol.net.events.partition.cache.EntryEvent.Type eventType = null;
20627+
com.tangosol.net.events.internal.StorageDispatcher dispatcher = getStorageDispatcher(binEntry.getStorage());
20628+
2063220629
if (dispatcher != null &&
20633-
((binEntry.isValueRemoved() || ReadWriteBackingMap.BIN_ERASE_PENDING.equals(binEntry.getBinaryValue()))
20630+
(binEntry.isValueRemoved() || ReadWriteBackingMap.BIN_ERASE_PENDING.equals(binEntry.getBinaryValue())
2063420631
? dispatcher.isSubscribed(eventType = com.tangosol.net.events.partition.cache.EntryEvent.Type.REMOVING)
2063520632
: dispatcher.isSubscribed(com.tangosol.net.events.partition.cache.EntryEvent.Type.INSERTING) || dispatcher.isSubscribed(com.tangosol.net.events.partition.cache.EntryEvent.Type.UPDATING)))
2063620633
{
@@ -38696,35 +38693,24 @@ public void onUncontend(Object oContender, com.tangosol.util.SegmentedConcurrent
3869638693

3869738694
/**
3869838695
* Process the specified event that was observed from the backing-map.
38699-
* See //dev/main/doc/coherence-core/BMEHandling.txt
38700-
*
38701-
* @param evtHolder the holder for the observed BM event to be
38702-
* processed
38703-
*
38704-
* @return true iff the event's entry status does not need to be added
38705-
* to the OOB set
38696+
* See //dev/main/doc/coherence-core/BMEHandling.txt
38697+
*
38698+
* @param evtHolder the holder for the observed BM event to be
38699+
* processed
38700+
*
38701+
* @return true iff the event's entry status does not need to be added
38702+
* to the OOB set
3870638703
*/
3870738704
protected boolean processEvent(com.tangosol.internal.util.BMEventFabric.EventHolder evtHolder)
3870838705
{
38709-
// import com.tangosol.internal.util.BMEventFabric;
38710-
// import com.tangosol.internal.util.BMEventFabric$EventHolder as com.tangosol.internal.util.BMEventFabric.EventHolder;
38711-
// import com.tangosol.internal.util.BMEventFabric$EventQueue as com.tangosol.internal.util.BMEventFabric.EventQueue;
38712-
// import com.tangosol.net.cache.CacheEvent;
38713-
// import com.tangosol.net.events.partition.TransactionEvent$Type as com.tangosol.net.events.partition.TransactionEvent.Type;
38714-
// import com.tangosol.net.events.partition.UnsolicitedCommitEvent$Type as com.tangosol.net.events.partition.UnsolicitedCommitEvent.Type;
38715-
// import com.tangosol.util.Base;
38716-
// import com.tangosol.util.Binary;
38717-
// import com.tangosol.util.ExternalizableHelper as com.tangosol.util.ExternalizableHelper;
38718-
// import com.tangosol.util.MapEvent as com.tangosol.util.MapEvent;
38719-
38720-
PartitionedCache service = getService();
38721-
com.tangosol.util.MapEvent event = evtHolder.getEvent();
38722-
Storage.EntryStatus status = (Storage.EntryStatus) evtHolder.getStatus();
38723-
Storage storage = status.getStorage();
38724-
Binary binKey = (Binary) status.getKey();
38725-
boolean fOOBEvent = false;
38726-
Storage.BinaryEntry entry = null;
38727-
boolean fSynthetic = false;
38706+
PartitionedCache service = getService();
38707+
com.tangosol.util.MapEvent event = evtHolder.getEvent();
38708+
Storage.EntryStatus status = (Storage.EntryStatus) evtHolder.getStatus();
38709+
Storage storage = status.getStorage();
38710+
Binary binKey = status.getKey();
38711+
boolean fOOBEvent = false;
38712+
Storage.BinaryEntry entry = null;
38713+
boolean fSynthetic = false;
3872838714

3872938715
// attempt to lock the entry (thus make the entry managed) prior to
3873038716
// updating the index & partitioned key index
@@ -38738,11 +38724,11 @@ else if (!service.isPrimaryOwner(status.getPartition()))
3873838724
{
3873938725
// the only scenario in which this is possible is an OOB event that landed
3874038726
// on the fabric however was processed after the associated partition had
38741-
// sucessfully transferred out to another member; do not process the event
38727+
// successfully transferred out to another member; do not process the event
3874238728
// and return control suggesting it is not OOB thus will not be published
3874338729
return true;
3874438730
}
38745-
// else this is a troubling case; process the com.tangosol.util.MapEvent updating anciliary
38731+
// else this is a troubling case; process the com.tangosol.util.MapEvent updating ancillary
3874638732
// data structures
3874738733
}
3874838734

@@ -38789,6 +38775,9 @@ else if (!service.isPrimaryOwner(status.getPartition()))
3878938775
// no need to send events for updates that remove DECO_STORE
3879038776
fEvents = false;
3879138777
fIncptrs = false;
38778+
38779+
// COH-15096: don't generate the UEM events either
38780+
status.setSuppressEvents(true);
3879238781
}
3879338782

3879438783
// no need update user indices for decoration updates

0 commit comments

Comments
 (0)