@@ -97,8 +97,13 @@ public void setUp() throws Exception {
97
97
98
98
ThreadPool threadPool = mock (ThreadPool .class );
99
99
when (threadPool .schedule (any (), any (), any ())).then (invocationOnMock -> {
100
- updatePinnedTimstampTask = invocationOnMock .getArgument (0 );
101
- updatePinnedTimstampTask .run ();
100
+ Runnable updateTask = invocationOnMock .getArgument (0 );
101
+ updatePinnedTimstampTask = () -> {
102
+ long currentTime = System .currentTimeMillis ();
103
+ while (RemoteStorePinnedTimestampService .getPinnedTimestamps ().v1 () < currentTime ) {
104
+ updateTask .run ();
105
+ }
106
+ };
102
107
return null ;
103
108
}).then (subsequentInvocationsOnMock -> null );
104
109
@@ -190,11 +195,20 @@ public void testIndexDeletionWithNoPinnedTimestampNoRecentMdFiles() throws Excep
190
195
addToTranslogAndListAndUpload (translog , ops , new Translog .Index ("3" , 3 , primaryTerm .get (), new byte [] { 1 }));
191
196
addToTranslogAndListAndUpload (translog , ops , new Translog .Index ("4" , 4 , primaryTerm .get (), new byte [] { 1 }));
192
197
198
+ assertBusy (() -> {
199
+ assertEquals (5 , blobStoreTransferService .listAll (getTranslogDirectory ().add (METADATA_DIR )).size ());
200
+ assertEquals (
201
+ 12 ,
202
+ blobStoreTransferService .listAll (getTranslogDirectory ().add (DATA_DIR ).add (String .valueOf (primaryTerm .get ()))).size ()
203
+ );
204
+ });
205
+
193
206
assertBusy (() -> assertTrue (translog .isRemoteGenerationDeletionPermitsAvailable ()));
194
207
updatePinnedTimstampTask .run ();
195
208
translog .trimUnreferencedReaders (true , false );
196
209
197
210
assertBusy (() -> assertTrue (translog .isRemoteGenerationDeletionPermitsAvailable ()));
211
+
198
212
assertBusy (() -> {
199
213
assertEquals (0 , blobStoreTransferService .listAll (getTranslogDirectory ().add (METADATA_DIR )).size ());
200
214
assertEquals (
@@ -250,6 +264,13 @@ public void testSimpleOperationsUpload() throws Exception {
250
264
addToTranslogAndListAndUpload (translog , ops , new Translog .Index ("5" , 5 , primaryTerm .get (), new byte [] { 1 }));
251
265
addToTranslogAndListAndUpload (translog , ops , new Translog .Index ("6" , 6 , primaryTerm .get (), new byte [] { 1 }));
252
266
267
+ assertBusy (() -> {
268
+ assertEquals (
269
+ 16 ,
270
+ blobStoreTransferService .listAll (getTranslogDirectory ().add (DATA_DIR ).add (String .valueOf (primaryTerm .get ()))).size ()
271
+ );
272
+ });
273
+
253
274
assertBusy (() -> assertTrue (translog .isRemoteGenerationDeletionPermitsAvailable ()));
254
275
255
276
RemoteStoreSettings .setPinnedTimestampsLookbackInterval (TimeValue .ZERO );
@@ -356,6 +377,11 @@ public void onResponse(List<BlobMetadata> blobMetadataList) {
356
377
);
357
378
when (remoteStorePinnedTimestampsBlobStore .getBlobPathForUpload (any ())).thenReturn (new BlobPath ());
358
379
380
+ Set <String > dataFilesBeforeTrim = blobStoreTransferService .listAll (
381
+ getTranslogDirectory ().add (DATA_DIR ).add (String .valueOf (primaryTerm .get ()))
382
+ );
383
+
384
+ assertBusy (() -> assertTrue (translog .isRemoteGenerationDeletionPermitsAvailable ()));
359
385
updatePinnedTimstampTask .run ();
360
386
RemoteStoreSettings .setPinnedTimestampsLookbackInterval (TimeValue .ZERO );
361
387
translog .trimUnreferencedReaders ();
@@ -366,11 +392,15 @@ public void onResponse(List<BlobMetadata> blobMetadataList) {
366
392
getTranslogDirectory ().add (DATA_DIR ).add (String .valueOf (primaryTerm .get ()))
367
393
);
368
394
369
- // We check for number of pinned timestamp or +1 due to latest metadata.
370
- assertTrue (
371
- metadataFilesAfterTrim .size () == pinnedTimestamps .size ()
372
- || metadataFilesAfterTrim .size () == pinnedTimestamps .size () + 1
373
- );
395
+ // If non pinned generations are within, minRemoteGenReferenced - 1 - indexSettings().getRemoteTranslogExtraKeep()
396
+ // we will not delete them
397
+ if (dataFilesAfterTrim .equals (dataFilesBeforeTrim ) == false ) {
398
+ // We check for number of pinned timestamp or +1 due to latest metadata.
399
+ assertTrue (
400
+ metadataFilesAfterTrim .size () == pinnedTimestamps .size ()
401
+ || metadataFilesAfterTrim .size () == pinnedTimestamps .size () + 1
402
+ );
403
+ }
374
404
375
405
for (String md : pinnedTimestampMatchingMetadataFiles ) {
376
406
assertTrue (metadataFilesAfterTrim .contains (md ));
0 commit comments