grcevski opened a new pull request #596: URL: https://github.com/apache/lucene/pull/596
# Description To support building long-lived readers without IndexReader to delegate caching to, it would be beneficial to refactor SoftDeletesDirectoryReaderWrapper, such that its caching behaviour (DelegatingCacheHelper) is moved into the superclass FilterDirectoryReader. With this change, external implementations of such readers, e.g. [LazySoftDeletesDirectoryReaderWrapper in Elasticsearch](https://github.com/elastic/elasticsearch/blob/master/server/src/main/java/org/apache/lucene/index/LazySoftDeletesDirectoryReaderWrapper.java) could properly modularize their codebase and remove split packages. # Solution The solution proposed here moves the delegating CacheHelper implementation from SoftDeletesDirectoryReaderWrapper to the superclass, so that it can be used by other subclasses. An alternative approach could possibly be a new public class specialization of the FilterDirectoryReader, which brings in the DelegatingCacheHelper class and enforces the caching behaviour. # Tests I added the following unit tests for the moved DelegatingCacheHelper class: - Tests that ensure the DelegatingCacheHelper is using unique CacheKey - Tests that ensure that, when the onClose listener is invoked on the delegate, the correct CacheKey is used to invalidate the cache. # Checklist Please review the following and check all that apply: - [X] I have reviewed the guidelines for [How to Contribute](https://wiki.apache.org/lucene/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 Lucene 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 `main` branch. - [X] I have run `./gradlew check`. - [X] I have added tests for my changes. -- 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. To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org 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