pawel-bugalski-dynatrace opened a new pull request #2429:
URL: https://github.com/apache/lucene-solr/pull/2429


   # Description
   
   Replaces `scratch1` field in `BytesRefHash` with `scratch` local variable. 
As a result
   it is now possible to call `BytesRefHash#find` concurrently as long as there 
are
   no concurrent modifications to BytesRefHash instance and it is correctly 
published.
   
   This addresses the concurrency issue with Monitor (aka Luwak) since it
   is using `BytesRefHash#find` concurrently without additional synchronization.
   
   While in theory creating a new `BytesRef` in `equals` method means 
additional allocation,
   in practice this allocation is removed by C2 compiler when inlining find 
method.
   
   # Solution
   
   Remove unnecessary state from `BytesRefHash` so that non-mutating find 
method behaves similar
   to `HashMap`'s get/containsKey.
   
   # Tests
   
   Added a new unit test that reproduces a problem.
   Checked that C2 compiler correctly removes the new allocation.
   
   # Checklist
   
   Please review the following and check all that apply:
   
   - [x] I have reviewed the guidelines for [How to 
Contribute](https://wiki.apache.org/solr/HowToContribute) and my code conforms 
to the standards described there to the best of my ability.
   - [x] I have created a Jira issue and added the issue ID to my pull request 
title.
   - [x] I have given Solr maintainers 
[access](https://help.github.com/en/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork)
 to contribute to my PR branch. (optional but recommended)
   - [x] I have developed this patch against the `master` branch.
   - [x] I have run `./gradlew check`.
   - [x] I have added tests for my changes.
   - [ ] I have added documentation for the [Ref 
Guide](https://github.com/apache/lucene-solr/tree/master/solr/solr-ref-guide) 
(for Solr changes only).
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



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

Reply via email to