|
8 | 8 |
|
9 | 9 | package org.opensearch.index.store;
|
10 | 10 |
|
| 11 | +import org.apache.logging.log4j.Level; |
11 | 12 | import org.apache.logging.log4j.LogManager;
|
12 | 13 | import org.apache.logging.log4j.Logger;
|
13 | 14 | import org.apache.lucene.codecs.CodecUtil;
|
|
41 | 42 | import org.opensearch.index.store.remote.metadata.RemoteSegmentMetadata;
|
42 | 43 | import org.opensearch.index.store.remote.metadata.RemoteSegmentMetadataHandler;
|
43 | 44 | import org.opensearch.indices.replication.common.ReplicationType;
|
| 45 | +import org.opensearch.test.MockLogAppender; |
| 46 | +import org.opensearch.test.junit.annotations.TestLogging; |
44 | 47 | import org.opensearch.threadpool.ThreadPool;
|
45 | 48 | import org.junit.After;
|
46 | 49 | import org.junit.Before;
|
|
58 | 61 | import java.util.concurrent.CountDownLatch;
|
59 | 62 | import java.util.concurrent.ExecutorService;
|
60 | 63 | import java.util.concurrent.TimeUnit;
|
| 64 | +import java.util.stream.Collectors; |
61 | 65 |
|
62 | 66 | import org.mockito.Mockito;
|
63 | 67 |
|
@@ -971,21 +975,38 @@ public void testDeleteStaleCommitsWithinThreshold() throws Exception {
|
971 | 975 | verify(remoteMetadataDirectory, times(0)).openInput(any(String.class), eq(IOContext.DEFAULT));
|
972 | 976 | }
|
973 | 977 |
|
| 978 | + @TestLogging(value = "_root:debug", reason = "Validate logging output") |
974 | 979 | public void testDeleteStaleCommitsActualDelete() throws Exception {
|
975 |
| - Map<String, Map<String, String>> metadataFilenameContentMapping = populateMetadata(); |
976 |
| - remoteSegmentStoreDirectory.init(); |
977 |
| - |
978 |
| - // popluateMetadata() adds stub to return 3 metadata files |
979 |
| - // We are passing lastNMetadataFilesToKeep=2 here so that oldest 1 metadata file will be deleted |
980 |
| - remoteSegmentStoreDirectory.deleteStaleSegmentsAsync(2); |
981 |
| - |
982 |
| - for (String metadata : metadataFilenameContentMapping.get(metadataFilename3).values()) { |
983 |
| - String uploadedFilename = metadata.split(RemoteSegmentStoreDirectory.UploadedSegmentMetadata.SEPARATOR)[1]; |
984 |
| - verify(remoteDataDirectory).deleteFile(uploadedFilename); |
| 980 | + try (final MockLogAppender appender = MockLogAppender.createForLoggers(LogManager.getRootLogger())) { |
| 981 | + appender.addExpectation( |
| 982 | + new MockLogAppender.PatternSeenWithLoggerPrefixExpectation( |
| 983 | + "Metadata files to delete message", |
| 984 | + "org.opensearch.index.store.RemoteSegmentStoreDirectory", |
| 985 | + Level.DEBUG, |
| 986 | + "metadataFilesEligibleToDelete=\\[" + metadataFilename3 + "\\] metadataFilesToBeDeleted=\\[" + metadataFilename3 + "\\]" |
| 987 | + ) |
| 988 | + ); |
| 989 | + |
| 990 | + final Map<String, Map<String, String>> metadataFilenameContentMapping = populateMetadata(); |
| 991 | + final List<String> filesToBeDeleted = metadataFilenameContentMapping.get(metadataFilename3) |
| 992 | + .values() |
| 993 | + .stream() |
| 994 | + .map(metadata -> metadata.split(RemoteSegmentStoreDirectory.UploadedSegmentMetadata.SEPARATOR)[1]) |
| 995 | + .collect(Collectors.toList()); |
| 996 | + |
| 997 | + remoteSegmentStoreDirectory.init(); |
| 998 | + |
| 999 | + // popluateMetadata() adds stub to return 3 metadata files |
| 1000 | + // We are passing lastNMetadataFilesToKeep=2 here so that oldest 1 metadata file will be deleted |
| 1001 | + remoteSegmentStoreDirectory.deleteStaleSegmentsAsync(2); |
| 1002 | + |
| 1003 | + for (final String file : filesToBeDeleted) { |
| 1004 | + verify(remoteDataDirectory).deleteFile(file); |
| 1005 | + } |
| 1006 | + assertBusy(() -> assertThat(remoteSegmentStoreDirectory.canDeleteStaleCommits.get(), is(true))); |
| 1007 | + verify(remoteMetadataDirectory).deleteFile(metadataFilename3); |
| 1008 | + appender.assertAllExpectationsMatched(); |
985 | 1009 | }
|
986 |
| - ; |
987 |
| - assertBusy(() -> assertThat(remoteSegmentStoreDirectory.canDeleteStaleCommits.get(), is(true))); |
988 |
| - verify(remoteMetadataDirectory).deleteFile(metadataFilename3); |
989 | 1010 | }
|
990 | 1011 |
|
991 | 1012 | public void testDeleteStaleCommitsActualDeleteWithLocks() throws Exception {
|
|
0 commit comments