[
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: [email protected]
For additional commands, e-mail: [email protected]