@@ -56,7 +56,7 @@ public void testKeepCommitsAfterGlobalCheckpoint() throws Exception {
5656 final AtomicLong globalCheckpoint = new AtomicLong ();
5757 TranslogDeletionPolicy translogPolicy = createTranslogDeletionPolicy ();
5858 CombinedDeletionPolicy indexPolicy = new CombinedDeletionPolicy (
59- OPEN_INDEX_AND_TRANSLOG , translogPolicy , globalCheckpoint ::get , null );
59+ OPEN_INDEX_AND_TRANSLOG , logger , translogPolicy , globalCheckpoint ::get , null );
6060
6161 final LongArrayList maxSeqNoList = new LongArrayList ();
6262 final LongArrayList translogGenList = new LongArrayList ();
@@ -96,7 +96,7 @@ public void testAcquireIndexCommit() throws Exception {
9696 final UUID translogUUID = UUID .randomUUID ();
9797 TranslogDeletionPolicy translogPolicy = createTranslogDeletionPolicy ();
9898 CombinedDeletionPolicy indexPolicy = new CombinedDeletionPolicy (
99- OPEN_INDEX_AND_TRANSLOG , translogPolicy , globalCheckpoint ::get , null );
99+ OPEN_INDEX_AND_TRANSLOG , logger , translogPolicy , globalCheckpoint ::get , null );
100100 long lastMaxSeqNo = between (1 , 1000 );
101101 long lastTranslogGen = between (1 , 20 );
102102 int safeIndex = 0 ;
@@ -117,6 +117,7 @@ public void testAcquireIndexCommit() throws Exception {
117117 long upper = safeIndex == commitList .size () - 1 ? lastMaxSeqNo :
118118 Long .parseLong (commitList .get (safeIndex + 1 ).getUserData ().get (SequenceNumbers .MAX_SEQ_NO )) - 1 ;
119119 globalCheckpoint .set (randomLongBetween (lower , upper ));
120+ commitList .forEach (this ::resetDeletion );
120121 indexPolicy .onCommit (commitList );
121122 // Captures and releases some commits
122123 int captures = between (0 , 5 );
@@ -145,6 +146,7 @@ public void testAcquireIndexCommit() throws Exception {
145146 }
146147 snapshottingCommits .forEach (indexPolicy ::releaseCommit );
147148 globalCheckpoint .set (randomLongBetween (lastMaxSeqNo , Long .MAX_VALUE ));
149+ commitList .forEach (this ::resetDeletion );
148150 indexPolicy .onCommit (commitList );
149151 for (int i = 0 ; i < commitList .size () - 1 ; i ++) {
150152 assertThat (commitList .get (i ).isDeleted (), equalTo (true ));
@@ -160,7 +162,7 @@ public void testLegacyIndex() throws Exception {
160162
161163 TranslogDeletionPolicy translogPolicy = createTranslogDeletionPolicy ();
162164 CombinedDeletionPolicy indexPolicy = new CombinedDeletionPolicy (
163- OPEN_INDEX_AND_TRANSLOG , translogPolicy , globalCheckpoint ::get , null );
165+ OPEN_INDEX_AND_TRANSLOG , logger , translogPolicy , globalCheckpoint ::get , null );
164166
165167 long legacyTranslogGen = randomNonNegativeLong ();
166168 IndexCommit legacyCommit = mockLegacyIndexCommit (translogUUID , legacyTranslogGen );
@@ -181,6 +183,7 @@ public void testLegacyIndex() throws Exception {
181183 assertThat (translogPolicy .getTranslogGenerationOfLastCommit (), equalTo (safeTranslogGen ));
182184
183185 // Make the fresh commit safe.
186+ resetDeletion (legacyCommit );
184187 globalCheckpoint .set (randomLongBetween (maxSeqNo , Long .MAX_VALUE ));
185188 indexPolicy .onCommit (Arrays .asList (legacyCommit , freshCommit ));
186189 verify (legacyCommit , times (2 )).delete ();
@@ -194,7 +197,7 @@ public void testKeepSingleNoOpsCommits() throws Exception {
194197 final UUID translogUUID = UUID .randomUUID ();
195198 TranslogDeletionPolicy translogPolicy = createTranslogDeletionPolicy ();
196199 CombinedDeletionPolicy indexPolicy = new CombinedDeletionPolicy (
197- OPEN_INDEX_AND_TRANSLOG , translogPolicy , globalCheckpoint ::get , null );
200+ OPEN_INDEX_AND_TRANSLOG , logger , translogPolicy , globalCheckpoint ::get , null );
198201
199202 final List <IndexCommit > commitList = new ArrayList <>();
200203 final int numOfNoOpsCommits = between (1 , 10 );
@@ -222,6 +225,7 @@ public void testKeepSingleNoOpsCommits() throws Exception {
222225 }
223226 // If the global checkpoint is still unassigned, we should still keep one NO_OPS_PERFORMED commit.
224227 globalCheckpoint .set (SequenceNumbers .UNASSIGNED_SEQ_NO );
228+ commitList .forEach (this ::resetDeletion );
225229 indexPolicy .onCommit (commitList );
226230 assertThat (translogPolicy .getMinTranslogGenerationForRecovery (), equalTo (lastNoopTranslogGen ));
227231 assertThat (translogPolicy .getTranslogGenerationOfLastCommit (), equalTo (lastTranslogGen ));
@@ -232,6 +236,7 @@ public void testKeepSingleNoOpsCommits() throws Exception {
232236 // Delete no-ops commit if global checkpoint advanced enough.
233237 final long lower = Long .parseLong (commitList .get (numOfNoOpsCommits ).getUserData ().get (SequenceNumbers .MAX_SEQ_NO ));
234238 globalCheckpoint .set (randomLongBetween (lower , Long .MAX_VALUE ));
239+ commitList .forEach (this ::resetDeletion );
235240 indexPolicy .onCommit (commitList );
236241 assertThat (translogPolicy .getMinTranslogGenerationForRecovery (), greaterThan (lastNoopTranslogGen ));
237242 assertThat (translogPolicy .getTranslogGenerationOfLastCommit (), equalTo (lastTranslogGen ));
@@ -242,7 +247,7 @@ public void testDeleteInvalidCommits() throws Exception {
242247 final AtomicLong globalCheckpoint = new AtomicLong (randomNonNegativeLong ());
243248 TranslogDeletionPolicy translogPolicy = createTranslogDeletionPolicy ();
244249 CombinedDeletionPolicy indexPolicy = new CombinedDeletionPolicy (
245- OPEN_INDEX_CREATE_TRANSLOG , translogPolicy , globalCheckpoint ::get , null );
250+ OPEN_INDEX_CREATE_TRANSLOG , logger , translogPolicy , globalCheckpoint ::get , null );
246251
247252 final int invalidCommits = between (1 , 10 );
248253 final List <IndexCommit > commitList = new ArrayList <>();
@@ -280,7 +285,7 @@ public void testKeepOnlyStartingCommitOnInit() throws Exception {
280285 }
281286 final IndexCommit startingCommit = randomFrom (commitList );
282287 CombinedDeletionPolicy indexPolicy = new CombinedDeletionPolicy (
283- OPEN_INDEX_AND_TRANSLOG , translogPolicy , globalCheckpoint ::get , startingCommit );
288+ OPEN_INDEX_AND_TRANSLOG , logger , translogPolicy , globalCheckpoint ::get , startingCommit );
284289 indexPolicy .onInit (commitList );
285290 for (IndexCommit commit : commitList ) {
286291 if (commit .equals (startingCommit ) == false ) {
@@ -299,7 +304,7 @@ public void testCheckUnreferencedCommits() throws Exception {
299304 final UUID translogUUID = UUID .randomUUID ();
300305 final TranslogDeletionPolicy translogPolicy = createTranslogDeletionPolicy ();
301306 CombinedDeletionPolicy indexPolicy = new CombinedDeletionPolicy (
302- OPEN_INDEX_AND_TRANSLOG , translogPolicy , globalCheckpoint ::get , null );
307+ OPEN_INDEX_AND_TRANSLOG , logger , translogPolicy , globalCheckpoint ::get , null );
303308 final List <IndexCommit > commitList = new ArrayList <>();
304309 int totalCommits = between (2 , 20 );
305310 long lastMaxSeqNo = between (1 , 1000 );
@@ -311,6 +316,7 @@ public void testCheckUnreferencedCommits() throws Exception {
311316 }
312317 IndexCommit safeCommit = randomFrom (commitList );
313318 globalCheckpoint .set (Long .parseLong (safeCommit .getUserData ().get (SequenceNumbers .MAX_SEQ_NO )));
319+ commitList .forEach (this ::resetDeletion );
314320 indexPolicy .onCommit (commitList );
315321 if (safeCommit == commitList .get (commitList .size () - 1 )) {
316322 // Safe commit is the last commit - no need to clean up
@@ -324,6 +330,7 @@ public void testCheckUnreferencedCommits() throws Exception {
324330 // Advanced enough
325331 globalCheckpoint .set (randomLongBetween (lastMaxSeqNo , Long .MAX_VALUE ));
326332 assertThat (indexPolicy .hasUnreferencedCommits (), equalTo (true ));
333+ commitList .forEach (this ::resetDeletion );
327334 indexPolicy .onCommit (commitList );
328335 // Safe commit is the last commit - no need to clean up
329336 assertThat (translogPolicy .getMinTranslogGenerationForRecovery (), equalTo (lastTranslogGen ));
@@ -337,17 +344,21 @@ IndexCommit mockIndexCommit(long maxSeqNo, UUID translogUUID, long translogGen)
337344 userData .put (SequenceNumbers .MAX_SEQ_NO , Long .toString (maxSeqNo ));
338345 userData .put (Translog .TRANSLOG_UUID_KEY , translogUUID .toString ());
339346 userData .put (Translog .TRANSLOG_GENERATION_KEY , Long .toString (translogGen ));
340- final AtomicBoolean deleted = new AtomicBoolean ();
341347 final IndexCommit commit = mock (IndexCommit .class );
342348 final Directory directory = mock (Directory .class );
343349 when (commit .getUserData ()).thenReturn (userData );
344350 when (commit .getDirectory ()).thenReturn (directory );
351+ resetDeletion (commit );
352+ return commit ;
353+ }
354+
355+ void resetDeletion (IndexCommit commit ) {
356+ final AtomicBoolean deleted = new AtomicBoolean ();
345357 when (commit .isDeleted ()).thenAnswer (args -> deleted .get ());
346358 doAnswer (arg -> {
347359 deleted .set (true );
348360 return null ;
349361 }).when (commit ).delete ();
350- return commit ;
351362 }
352363
353364 IndexCommit mockLegacyIndexCommit (UUID translogUUID , long translogGen ) throws IOException {
@@ -356,6 +367,7 @@ IndexCommit mockLegacyIndexCommit(UUID translogUUID, long translogGen) throws IO
356367 userData .put (Translog .TRANSLOG_GENERATION_KEY , Long .toString (translogGen ));
357368 final IndexCommit commit = mock (IndexCommit .class );
358369 when (commit .getUserData ()).thenReturn (userData );
370+ resetDeletion (commit );
359371 return commit ;
360372 }
361373}
0 commit comments