You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Denis Mekhanikov (JIRA)" <ji...@apache.org> on 2017/09/15 09:00:00 UTC
[jira] [Created] (IGNITE-6388) ExpiryPolicy is used incorrectly
during invoke
Denis Mekhanikov created IGNITE-6388:
----------------------------------------
Summary: ExpiryPolicy is used incorrectly during invoke
Key: IGNITE-6388
URL: https://issues.apache.org/jira/browse/IGNITE-6388
Project: Ignite
Issue Type: Bug
Affects Versions: 2.1, 2.0, 1.9, 1.8, 1.7
Reporter: Denis Mekhanikov
Behavior of {{invoke(...)}} regarding {{ExpiryPolicy}} doesn't conform to the spec.
Based on {{EntryProcessor}} doc, the expected behavior is:
{code:java}
cache.invoke(key, (e, a) -> {
e.getValue(); // getExpiryForAccess()
e.setValue(2);
e.getValue();
e.setValue(3); // getExpiryForUpdate()
return e.getValue();
});
{code}
{code:java}
cache.invoke(key, (e, a) -> {
e.getValue(); // getExpiryForAccess()
e.remove();
e.getValue();
e.setValue(2); // getExpiryForUpdate()
return e.getValue();
});
{code}
{code:java}
cache.invoke(key, (e, a) -> {
e.getValue(); // getExpiryForAccess()
e.setValue(2);
e.getValue();
e.setValue(3);
e.remove();
return e.getValue();
});
{code}
Additionally, if {{CacheStore}} with read-through is configured, and the accessed value wasn't loaded before, then {{getExpiryForCreation()}} should be called.
Currently behavior depends on configured atomicity mode and none of observed options conform to the spec.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)