Factories for cache creation [LUCENE-2394]
- Dominant language
- Java
- Stars
- 3.6k
- Forks
- 1.4k
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 88
Description
Hello all,
I've seen the #1906 (Complete overhaul of FieldCache API/Implementation) targeted for version 3.1 and I think that maybe, before this overhaul, it would be good to have a more cirurgical change, that would need smaller effort in new unit tests, without behavior changes and almost no performance impact.
One way to achieve that is inserting strategically positioned calls to a factory structure that would allow every already developed code to continue working without changes, at the same time giving the opportunity to put alternative factories to work.
Focusing on the cache idea (not specifically the FieldCache, that has it's own specific responsabilities, but in the key/value structure that will ultimately hold the cached objects) i've done the small change contained in the patch I'm attaching to this.
It has default implementations that encapsulate what was being originally used in FieldCache, so all current test cases passes, and creates the possibility to create a EHCacheFactory or InfinispanCacheFactory, or even MyOwnCachingStructureFactory.
With this, it would be easy to take advantage of the features provided by this kind of project in a uniform way and rapidly allowing new possibilities in scalability and tuning.
The code in the patch is small (16kb file is small if compared to the hundreds of kbs in other patchs) and even though it doesn't have javadoc right now (sorry) I hope it can be easly understood. So, if Lucene maintainers see that this contribution could be used (in a 2.9.n+1 and 3.0.n+1 and maybe influencing future versions) we could put some more effort in it, documenting, adding necessary unit tests and maybe contributing other factory implementations.
What do you think?
---
Migrated from [LUCENE-2394](https://issues.apache.org/jira/browse/LUCENE-2394) by Oswaldo Dantas, updated May 09 2016
Attachments: [ASF.LICENSE.NOT.GRANTED--factoriesPatch.patch](https://apache.github.io/lucene-jira-archive/attachments/LUCENE-2394/ASF.LICENSE.NOT.GRANTED--factoriesPatch.patch)
Contributor guide
Research direction
Start by reviewing the attached ASF.LICENSE.NOT.GRANTED--factoriesPatch.patch and the existing FieldCache implementation mentioned in the issue. Compare the proposed factory structure with current cache creation and existing unit tests. Done means preserving current behavior and tests while providing the requested alternative cache-factory extension point.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100