apache / apache/lucene

PooledSegmentReader, pools SegmentReader underlying byte arrays [LUCENE-1574]

Open
#2,648 18 comments 0 reactions 0 assignees View on GitHub
affects-version:2.4.1 legacy-jira-fix-version:4.9 legacy-jira-fix-version:6.0 legacy-jira-priority:Minor type:enhancement
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

PooledSegmentReader pools the underlying byte arrays of deleted docs and norms for realtime search. It is designed for use with IndexReader.clone which can create many copies of byte arrays, which are of the same length for a given segment. When pooled they can be reused which could save on memory.

Do we want to benchmark the memory usage comparison of PooledSegmentReader vs GC? Many times GC is enough for these smaller objects.

---
Migrated from [LUCENE-1574](https://issues.apache.org/jira/browse/LUCENE-1574) by Jason Rutherglen, updated May 09 2016
Attachments: [LUCENE-1574.patch](https://apache.github.io/lucene-jira-archive/attachments/LUCENE-1574/LUCENE-1574.patch)

Contributor guide

Open the contributing guide

Research direction

Start by reading the PooledSegmentReader and IndexReader.clone discussion in this issue and inspect the attached LUCENE-1574.patch. Compare memory usage for deleted-doc and norms byte arrays against GC, with a clear comparison benchmark serving as the completion criterion.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
search
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.