apache / apache/lucene

Factories for cache creation [LUCENE-2394]

Open
#3,469 5 comments 0 reactions 0 assignees View on GitHub
legacy-jira-fix-version:4.9 legacy-jira-fix-version:6.0 legacy-jira-priority:Major module:core/search type:enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.