[
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)