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

Semen Boikov commented on IGNITE-4465:
--------------------------------------

Implemented following fix: before trying to load entry from store we need 
somehow prevent entry eviction, for this I added 'IS_EVICT_DISABLED' flag in 
GridCacheMapEntry. This flag is set in innerGetVersioned and then should be 
reset after load is finished, also this flag is reset each time entry is 
updated. Initial test stared to pass, need verify on tests on TeamCity.

> Read-through is not properly working with multiple gets executed in parallel
> ----------------------------------------------------------------------------
>
>                 Key: IGNITE-4465
>                 URL: https://issues.apache.org/jira/browse/IGNITE-4465
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 1.8
>            Reporter: Valentin Kulichenko
>            Assignee: Semen Boikov
>            Priority: Critical
>             Fix For: 1.9
>
>         Attachments: ReadThroughTest.java
>
>
> The issue is sporadic and very hard to isolate, however I managed to create a 
> test that reproduces it. Basically, the scenario is the following:
> * We have one server and one client.
> * The client creates a cache with read through enabled.
> * The client then executes bunch of jobs (number of jobs is bigger than 
> number of threads in server's public pool) asynchronously in parallel.
> * {{CacheStore.load()}} method is called more than once and invocations go 
> one after another (sometimes even in the same thread!) with an interval of a 
> bit more than one second, which is the duration of load (there is a 
> {{Thread.sleep(1000)}} in the implementation.
> * In addition, statistics show that number of misses go up to 50 which is 
> number of jobs. I would not expect more than 16 there. First 16 jobs executed 
> in parallel can all register miss at the same time before load happens. But 
> all consecutive execution must read the value from cache.
> Test is attached.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to