SOLR-17942: Raising configurable RAM per thread hard limit using reflection #3741
+49
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
https://issues.apache.org/jira/browse/SOLR-17942
Description
The parameter ramPerThreadHardLimitMB cannot be configured more than 2GB in Lucene, as a consequence a single thread cannot write segments larger than 2GB.
Refer: https://lucene.apache.org/core/9_9_0/core/org/apache/lucene/index/IndexWriterConfig.html#setRAMPerThreadHardLimitMB(int)
Solution
This PR makes this parameter configurable above the 2GB limit, so that each thread can write a bigger segment. I use reflection to bypass this hard-coded limit in Lucene.
When ramPerThreadHardLimitMB is configured with a value more than 2GB, setPerThreadRAMLimitViaReflection is called, bypassing the limit
Tests
Checklist
Please review the following and check all that apply:
mainbranch../gradlew check.