@@ -1128,37 +1128,39 @@ public static void assertMaxSeqNoInCommitUserData(Engine engine) throws Exceptio
1128
1128
}
1129
1129
1130
1130
public static void assertAtMostOneLuceneDocumentPerSequenceNumber (Engine engine ) throws IOException {
1131
- if (engine .config ().getIndexSettings ().isSoftDeleteEnabled () == false || engine instanceof InternalEngine == false ) {
1132
- return ;
1133
- }
1134
1131
try {
1135
1132
engine .refresh ("test" );
1136
1133
try (Engine .Searcher searcher = engine .acquireSearcher ("test" )) {
1137
- DirectoryReader reader = Lucene .wrapAllDocsLive (searcher .getDirectoryReader ());
1138
- Set <Long > seqNos = new HashSet <>();
1139
- for (LeafReaderContext leaf : reader .leaves ()) {
1140
- NumericDocValues primaryTermDocValues = leaf .reader ().getNumericDocValues (SeqNoFieldMapper .PRIMARY_TERM_NAME );
1141
- NumericDocValues seqNoDocValues = leaf .reader ().getNumericDocValues (SeqNoFieldMapper .NAME );
1142
- int docId ;
1143
- while ((docId = seqNoDocValues .nextDoc ()) != DocIdSetIterator .NO_MORE_DOCS ) {
1144
- assertTrue (seqNoDocValues .advanceExact (docId ));
1145
- long seqNo = seqNoDocValues .longValue ();
1146
- assertThat (seqNo , greaterThanOrEqualTo (0L ));
1147
- if (primaryTermDocValues .advanceExact (docId )) {
1148
- if (seqNos .add (seqNo ) == false ) {
1149
- final IdOnlyFieldVisitor idFieldVisitor = new IdOnlyFieldVisitor ();
1150
- leaf .reader ().document (docId , idFieldVisitor );
1151
- throw new AssertionError ("found multiple documents for seq=" + seqNo + " id=" + idFieldVisitor .getId ());
1152
- }
1153
- }
1154
- }
1155
- }
1134
+ assertAtMostOneLuceneDocumentPerSequenceNumber (engine .config ().getIndexSettings (), searcher .getDirectoryReader ());
1156
1135
}
1157
1136
} catch (AlreadyClosedException ignored ) {
1158
1137
1159
1138
}
1160
1139
}
1161
1140
1141
+ public static void assertAtMostOneLuceneDocumentPerSequenceNumber (IndexSettings indexSettings ,
1142
+ DirectoryReader reader ) throws IOException {
1143
+ Set <Long > seqNos = new HashSet <>();
1144
+ final DirectoryReader wrappedReader = indexSettings .isSoftDeleteEnabled () ? Lucene .wrapAllDocsLive (reader ) : reader ;
1145
+ for (LeafReaderContext leaf : wrappedReader .leaves ()) {
1146
+ NumericDocValues primaryTermDocValues = leaf .reader ().getNumericDocValues (SeqNoFieldMapper .PRIMARY_TERM_NAME );
1147
+ NumericDocValues seqNoDocValues = leaf .reader ().getNumericDocValues (SeqNoFieldMapper .NAME );
1148
+ int docId ;
1149
+ while ((docId = seqNoDocValues .nextDoc ()) != DocIdSetIterator .NO_MORE_DOCS ) {
1150
+ assertTrue (seqNoDocValues .advanceExact (docId ));
1151
+ long seqNo = seqNoDocValues .longValue ();
1152
+ assertThat (seqNo , greaterThanOrEqualTo (0L ));
1153
+ if (primaryTermDocValues .advanceExact (docId )) {
1154
+ if (seqNos .add (seqNo ) == false ) {
1155
+ final IdOnlyFieldVisitor idFieldVisitor = new IdOnlyFieldVisitor ();
1156
+ leaf .reader ().document (docId , idFieldVisitor );
1157
+ throw new AssertionError ("found multiple documents for seq=" + seqNo + " id=" + idFieldVisitor .getId ());
1158
+ }
1159
+ }
1160
+ }
1161
+ }
1162
+ }
1163
+
1162
1164
public static MapperService createMapperService (String type ) throws IOException {
1163
1165
IndexMetaData indexMetaData = IndexMetaData .builder ("test" )
1164
1166
.settings (Settings .builder ()
0 commit comments