Skip to content

Commit 770a791

Browse files
author
Sachin Kale
committed
Add more logs and fix test setup
Signed-off-by: Sachin Kale <[email protected]>
1 parent a69a975 commit 770a791

File tree

2 files changed

+53
-7
lines changed

2 files changed

+53
-7
lines changed

server/src/main/java/org/opensearch/index/translog/RemoteFsTranslog.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,15 +694,19 @@ public void onResponse(List<BlobMetadata> blobMetadata) {
694694
return;
695695
}
696696

697+
logger.debug("metadataFilesToBeDeleted = {}", metadataFilesToBeDeleted);
697698
// For all the files that we are keeping, fetch min and max generations
698699
List<String> metadataFilesNotToBeDeleted = new ArrayList<>(metadataFiles);
699700
metadataFilesNotToBeDeleted.removeAll(metadataFilesToBeDeleted);
700701

702+
logger.debug("metadataFilesNotToBeDeleted = {}", metadataFilesNotToBeDeleted);
701703
Set<Long> generationsToBeDeleted = getGenerationsToBeDeleted(
702704
metadataFilesNotToBeDeleted,
703705
metadataFilesToBeDeleted,
704706
indexDeleted
705707
);
708+
709+
logger.debug("generationsToBeDeleted = {}", generationsToBeDeleted);
706710
if (generationsToBeDeleted.isEmpty() == false) {
707711
// Delete stale generations
708712
translogTransferManager.deleteGenerationAsync(
@@ -782,6 +786,12 @@ protected List<String> getMetadataFilesToBeDeleted(List<String> metadataFiles) {
782786
pinnedTimestampsState.v1()
783787
);
784788

789+
logger.trace(
790+
"metadataFiles.size = {}, metadataFilesToBeDeleted based on age based filtering = {}",
791+
metadataFiles.size(),
792+
metadataFilesToBeDeleted.size()
793+
);
794+
785795
// Get md files matching pinned timestamps
786796
Set<String> implicitLockedFiles = RemoteStoreUtils.getPinnedTimestampLockedFiles(
787797
metadataFilesToBeDeleted,
@@ -794,6 +804,12 @@ protected List<String> getMetadataFilesToBeDeleted(List<String> metadataFiles) {
794804
// Filter out metadata files matching pinned timestamps
795805
metadataFilesToBeDeleted.removeAll(implicitLockedFiles);
796806

807+
logger.trace(
808+
"implicitLockedFiles.size = {}, metadataFilesToBeDeleted based on pinned timestamp filtering = {}",
809+
implicitLockedFiles.size(),
810+
metadataFilesToBeDeleted.size()
811+
);
812+
797813
return metadataFilesToBeDeleted;
798814
}
799815

server/src/test/java/org/opensearch/index/translog/RemoteFsTranslogWithPinnedTimestampTests.java

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,13 @@ public void setUp() throws Exception {
9797

9898
ThreadPool threadPool = mock(ThreadPool.class);
9999
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+
};
102107
return null;
103108
}).then(subsequentInvocationsOnMock -> null);
104109

@@ -190,11 +195,20 @@ public void testIndexDeletionWithNoPinnedTimestampNoRecentMdFiles() throws Excep
190195
addToTranslogAndListAndUpload(translog, ops, new Translog.Index("3", 3, primaryTerm.get(), new byte[] { 1 }));
191196
addToTranslogAndListAndUpload(translog, ops, new Translog.Index("4", 4, primaryTerm.get(), new byte[] { 1 }));
192197

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+
193206
assertBusy(() -> assertTrue(translog.isRemoteGenerationDeletionPermitsAvailable()));
194207
updatePinnedTimstampTask.run();
195208
translog.trimUnreferencedReaders(true, false);
196209

197210
assertBusy(() -> assertTrue(translog.isRemoteGenerationDeletionPermitsAvailable()));
211+
198212
assertBusy(() -> {
199213
assertEquals(0, blobStoreTransferService.listAll(getTranslogDirectory().add(METADATA_DIR)).size());
200214
assertEquals(
@@ -250,6 +264,13 @@ public void testSimpleOperationsUpload() throws Exception {
250264
addToTranslogAndListAndUpload(translog, ops, new Translog.Index("5", 5, primaryTerm.get(), new byte[] { 1 }));
251265
addToTranslogAndListAndUpload(translog, ops, new Translog.Index("6", 6, primaryTerm.get(), new byte[] { 1 }));
252266

267+
assertBusy(() -> {
268+
assertEquals(
269+
16,
270+
blobStoreTransferService.listAll(getTranslogDirectory().add(DATA_DIR).add(String.valueOf(primaryTerm.get()))).size()
271+
);
272+
});
273+
253274
assertBusy(() -> assertTrue(translog.isRemoteGenerationDeletionPermitsAvailable()));
254275

255276
RemoteStoreSettings.setPinnedTimestampsLookbackInterval(TimeValue.ZERO);
@@ -356,6 +377,11 @@ public void onResponse(List<BlobMetadata> blobMetadataList) {
356377
);
357378
when(remoteStorePinnedTimestampsBlobStore.getBlobPathForUpload(any())).thenReturn(new BlobPath());
358379

380+
Set<String> dataFilesBeforeTrim = blobStoreTransferService.listAll(
381+
getTranslogDirectory().add(DATA_DIR).add(String.valueOf(primaryTerm.get()))
382+
);
383+
384+
assertBusy(() -> assertTrue(translog.isRemoteGenerationDeletionPermitsAvailable()));
359385
updatePinnedTimstampTask.run();
360386
RemoteStoreSettings.setPinnedTimestampsLookbackInterval(TimeValue.ZERO);
361387
translog.trimUnreferencedReaders();
@@ -366,11 +392,15 @@ public void onResponse(List<BlobMetadata> blobMetadataList) {
366392
getTranslogDirectory().add(DATA_DIR).add(String.valueOf(primaryTerm.get()))
367393
);
368394

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+
}
374404

375405
for (String md : pinnedTimestampMatchingMetadataFiles) {
376406
assertTrue(metadataFilesAfterTrim.contains(md));

0 commit comments

Comments
 (0)