ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Denis Mekhanikov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-11371) Cache get operation with readThrough returns null if remove is performed concurrently
Date Tue, 19 Mar 2019 14:03:00 GMT

    [ https://issues.apache.org/jira/browse/IGNITE-11371?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16796122#comment-16796122
] 

Denis Mekhanikov commented on IGNITE-11371:
-------------------------------------------

[~agoncharuk] the changes look good to me. Consider adding tests for transactional caches
and having at least one backup.

Also I think, it would be good to have a test like follows, just to fix the behaviour:
{code:java}
@Test
public void testRemoveIsApplied() throws Exception {
    startGrid(0);

    IgniteEx client = startGrid("client");

    IgniteCache<Object, Object> cache = client.cache(TEST_CACHE);

    String key = "key";

    assertNotNull(cache.get(key));

    IgniteFuture<Object> getFut = cache.getAsync(key);

    cache.remove(key);

    assertNotNull(getFut.get());

    assertNull(cache.localPeek(key)); // Check, that remove actually takes place.

    assertNotNull(cache.get(key));
}
{code}

> Cache get operation with readThrough returns null if remove is performed concurrently
> -------------------------------------------------------------------------------------
>
>                 Key: IGNITE-11371
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11371
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 1.8, 2.5, 2.7
>            Reporter: Denis Mekhanikov
>            Assignee: Alexey Goncharuk
>            Priority: Major
>             Fix For: 2.8
>
>         Attachments: IgniteInvalidationNullRunner.java
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Consider a situation, when you have a cache with {{CacheStore}} and {{readThrough}} configured.
> One may expect, that {{IgniteCache#get(...)}} operation will never return {{null}} for
keys, that are present in the underlying {{CacheStore}}. But actually it's possible to get
{{null}} in case if remove operation is called on the same key while {{CacheStore#load}} is
running.
> Reproducer is attached.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message