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)