@@ -884,24 +884,26 @@ protected StoredFieldsReader doGetSequentialStoredFieldsReader(StoredFieldsReade
884
884
}
885
885
}
886
886
887
- DirectoryReaderWithAllLiveDocs (DirectoryReader in ) throws IOException {
888
- super (in , new SubReaderWrapper () {
889
- @ Override
890
- public LeafReader wrap (LeafReader leaf ) {
891
- final SegmentReader segmentReader = segmentReader (leaf );
892
- final Bits hardLiveDocs = segmentReader .getHardLiveDocs ();
893
- if (hardLiveDocs == null ) {
894
- return new LeafReaderWithLiveDocs (leaf , null , leaf .maxDoc ());
895
- }
896
- // Once soft-deletes is enabled, we no longer hard-update or hard-delete documents directly.
897
- // Two scenarios that we have hard-deletes: (1) from old segments where soft-deletes was disabled,
898
- // (2) when IndexWriter hits non-aborted exceptions. These two cases, IW flushes SegmentInfos
899
- // before exposing the hard-deletes, thus we can use the hard-delete count of SegmentInfos.
900
- final int numDocs = segmentReader .maxDoc () - segmentReader .getSegmentInfo ().getDelCount ();
901
- assert numDocs == popCount (hardLiveDocs ) : numDocs + " != " + popCount (hardLiveDocs );
902
- return new LeafReaderWithLiveDocs (segmentReader , hardLiveDocs , numDocs );
887
+ private static final SubReaderWrapper ALL_LIVE_DOCS_SUB_READER_WRAPPER = new SubReaderWrapper () {
888
+ @ Override
889
+ public LeafReader wrap (LeafReader leaf ) {
890
+ final SegmentReader segmentReader = segmentReader (leaf );
891
+ final Bits hardLiveDocs = segmentReader .getHardLiveDocs ();
892
+ if (hardLiveDocs == null ) {
893
+ return new LeafReaderWithLiveDocs (leaf , null , leaf .maxDoc ());
903
894
}
904
- });
895
+ // Once soft-deletes is enabled, we no longer hard-update or hard-delete documents directly.
896
+ // Two scenarios that we have hard-deletes: (1) from old segments where soft-deletes was disabled,
897
+ // (2) when IndexWriter hits non-aborted exceptions. These two cases, IW flushes SegmentInfos
898
+ // before exposing the hard-deletes, thus we can use the hard-delete count of SegmentInfos.
899
+ final int numDocs = segmentReader .maxDoc () - segmentReader .getSegmentInfo ().getDelCount ();
900
+ assert numDocs == popCount (hardLiveDocs ) : numDocs + " != " + popCount (hardLiveDocs );
901
+ return new LeafReaderWithLiveDocs (segmentReader , hardLiveDocs , numDocs );
902
+ }
903
+ };
904
+
905
+ DirectoryReaderWithAllLiveDocs (DirectoryReader in ) throws IOException {
906
+ super (in , ALL_LIVE_DOCS_SUB_READER_WRAPPER );
905
907
}
906
908
907
909
@ Override
0 commit comments