ignite-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Myron Chelyada <myron.chely...@gmail.com>
Subject Version issue with concurrent cache updates (EntryProcessor)
Date Tue, 09 Feb 2016 08:39:06 GMT
Hello team,

I am performing concurrent updates on the same entries in cache by using
EntryProcessor.
(Entry processor just sums existing values with provided delta values. I.e.
I have List of doubles as cache value).
And after performing such updates N times I expected to have final values
equal to N (I used 1.0 as delta values in my testing). But my actual values
are less (I could say even much less).
And after digging deeply into that and enabling debug I've captured the
following statement in log files:

[cache.GridCacheMapEntry] - Received entry update with smaller version than
current (will ignore) [entry=GridDhtAtomicCacheEntry
[super=GridDhtCacheEntry [rdrs=[], locPart=GridDhtLocalPartition [id=207,
mapPubSize=1, rmvQueue=GridCircularBuffer [sizeMask=511, idxGen=0], cntr=1,
state=OWNING, reservations=0, empty=false, createTime=02/08/2016 15:12:26,
mapPubSize=1], super=GridDistributedCacheEntry [super=GridCacheMapEntry
[key=KeyCacheObjectImpl [val=<myKey>, hasValBytes=true],
val=CacheObjectImpl [val=[1.0,1.0], hasValBytes=true],
startVer=1454937145741, ver=GridCacheVersion [topVer=66417147,
nodeOrderDrId=1, globalTime=1454937165753, order=1454937145734],
hash=-1875348639, extras=null, flags=0]]]], newVer=GridCacheVersion
[topVer=66417147, nodeOrderDrId=1, globalTime=1454937165753,
order=1454937145732]]

My test is being run on single node(i.e. there is only one grid node) and I
am using Ignite 1.5.0.final. There might be up to 5 threads performing
concurrent updates. My key cache settings (which as far as I understand
might affect update behavior) are:

cacheMode=PARTITIONED

atomicityMode=ATOMIC

atomicWriteOrderMode=CLOCK

writeSynchronizationMode=FULL_SYNC


And my suspicion is that since there is CLOCK write order mode used and as
it states:

"In this mode, write versions are assigned on a sender node which generally
leads to better performance in CacheWriteSynchronizationMode.FULL_SYNC
<https://ignite.apache.org/releases/1.5.0.final/javadoc/org/apache/ignite/cache/CacheWriteSynchronizationMode.html#FULL_SYNC>
synchronization
mode, since in this case sender can send write requests to primary and
backups at the same time."

, actually one thread assigns/initializes version earlier than another
while updates(on entries) are performed in inverse order.

So, could you please clarify am I correct? If not, what is the reason?

Is it expected behavior? How can It be handled correctly?

Thanks,

Mime
View raw message