You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "wmz7year (JIRA)" <ji...@apache.org> on 2016/01/26 03:44:39 UTC
[jira] [Assigned] (IGNITE-2231) 'Put' cache event treats entry
created at lock acquisition time as old value
[ https://issues.apache.org/jira/browse/IGNITE-2231?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
wmz7year reassigned IGNITE-2231:
--------------------------------
Assignee: wmz7year
> '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: wmz7year
> Labels: important
> Fix For: 1.6
>
> Attachments: EventsProcessingTest.java
>
>
> 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)