Denis Magda created IGNITE-2231: ----------------------------------- Summary: 'Put' cache event treats entry created at lock acquisition time as old value Key: IGNITE-2231 URL: https://issues.apache.org/jira/browse/IGNITE-2231 Project: Ignite Issue Type: Bug Components: cache Affects Versions: ignite-1.4 Reporter: Denis Magda Assignee: Alexey Goncharuk Fix For: 1.6
Subscribe for EVT_CACHE_OBJECT_PUT event on one node and perform 'put' operations from the other to an empty transnational cache. The subscriber will receive a notification saying that there was an old value for a key at the time the new was being inserted. In fact the was no an old value, the entry with a {{null}} as a value was generated as a part of implicit lock acquisition. This snippet of the code in {{GridCacheMapEntry}} generates a wrong event (innerSet function) {noformat} if (evt && newVer != null && cctx.events().isRecordable(EVT_CACHE_OBJECT_PUT)) { CacheObject evtOld = cctx.unwrapTemporary(old); cctx.events().addEvent(partition(), key, evtNodeId, tx == null ? null : tx.xid(), newVer, EVT_CACHE_OBJECT_PUT, val, val != null, evtOld, evtOld != null || hasValueUnlocked(), subjId, null, taskName, keepBinary); } {noformat} Attached the test that lets reproduce the issue. -- This message was sent by Atlassian JIRA (v6.3.4#6332)