[ 
https://issues.apache.org/jira/browse/SOLR-10121?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yonik Seeley updated SOLR-10121:
--------------------------------
    Attachment: SOLR-10121.patch

Here's a draft patch to fix the currently identified concurrency issues in 
BlockCache.
- fetch() checked isRemoved() before the read from the block, but the block 
could be reused after that point (i.e. before or during the read), causing the 
wrong data to be returned.
- store() allowed existing blocks to be updated, but resulted in corruption.  
The reason is that if one retrieves an existing block, one does not know when 
that block may stop being used for one key and start being used for another 
key.  To safely do this, one would require write locks.  Since we don't need 
the functionality, I simply failed the case of trying to cache/update a block 
already in the cache.

> BlockCache corruption with high concurrency
> -------------------------------------------
>
>                 Key: SOLR-10121
>                 URL: https://issues.apache.org/jira/browse/SOLR-10121
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Yonik Seeley
>            Assignee: Yonik Seeley
>         Attachments: SOLR-10121.patch
>
>
> Improving the tests of the BlockCache in SOLR-10116 uncovered a corruption 
> bug (either that or the test is flawed... TBD).
> The failing test is TestBlockCache.testBlockCacheConcurrent()



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to