Index: oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/MetricsRemoteStoreMonitorTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/MetricsRemoteStoreMonitorTest.java (date 1560167677000) +++ oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/MetricsRemoteStoreMonitorTest.java (date 1560167677000) @@ -0,0 +1,59 @@ +package org.apache.jackrabbit.oak.segment.file; + +import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser; +import org.apache.jackrabbit.oak.stats.CounterStats; +import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider; +import org.apache.jackrabbit.oak.stats.StatsOptions; +import org.apache.jackrabbit.oak.stats.TimerStats; +import org.junit.After; + +import static org.apache.jackrabbit.oak.segment.file.MetricsRemoteStoreMonitor.*; +import static org.junit.Assert.assertEquals; +import org.junit.Before; +import org.junit.Test; + +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +public class MetricsRemoteStoreMonitorTest { + private ScheduledExecutorService executor; + + private CounterStats requestCount; + private CounterStats requestErrorCount; + private TimerStats requestDuration; + + private int requestCountExpected = 3; + private int requestErrorCountExpected = 2; + + @Before + public void setup(){ + executor = Executors.newSingleThreadScheduledExecutor(); + DefaultStatisticsProvider statisticsProvider = new DefaultStatisticsProvider(executor); + MetricsRemoteStoreMonitor remoteStoreMonitor = new MetricsRemoteStoreMonitor(statisticsProvider); + requestCount = statisticsProvider.getCounterStats(REQUEST_COUNT, StatsOptions.DEFAULT); + requestErrorCount = statisticsProvider.getCounterStats(REQUEST_ERROR, StatsOptions.DEFAULT); + requestDuration = statisticsProvider.getTimer(REQUEST_DURATION, StatsOptions.METRICS_ONLY); + + for(int i = 0; i < requestCountExpected; i++){ + remoteStoreMonitor.requestCount(); + } + for(int i = 0; i < requestErrorCountExpected; i++){ + requestErrorCount.inc(); + } + requestDuration.update(100, TimeUnit.MILLISECONDS); + + } + + @After + public void tearDown(){ + new ExecutorCloser(executor).close(); + } + + @Test + public void testStats(){ + assertEquals(requestCountExpected, requestCount.getCount()); + assertEquals(requestErrorCountExpected, requestErrorCount.getCount()); + assertEquals(1, requestDuration.getCount()); + } +} Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarFiles.java (date 1560156985000) @@ -52,6 +52,7 @@ import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor; import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitor; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence; import org.apache.jackrabbit.oak.segment.spi.persistence.Buffer; @@ -122,6 +123,8 @@ private FileStoreMonitor fileStoreMonitor; + private RemoteStoreMonitor remoteStoreMonitor; + private long maxFileSize; private boolean readOnly; @@ -166,6 +169,11 @@ return this; } + public Builder withRemoteStoreMonitor(RemoteStoreMonitor remoteStoreMonitor) { + this.remoteStoreMonitor = checkNotNull(remoteStoreMonitor); + return this; + } + public Builder withMaxFileSize(long maxFileSize) { checkArgument(maxFileSize > 0); this.maxFileSize = maxFileSize; @@ -197,6 +205,7 @@ checkState(tarRecovery != null, "TAR recovery strategy not specified"); checkState(ioMonitor != null, "I/O monitor not specified"); checkState(readOnly || fileStoreMonitor != null, "File store statistics not specified"); + checkState(remoteStoreMonitor != null, "Remote store statistics not specified"); checkState(readOnly || maxFileSize != 0, "Max file size not specified"); if (persistence == null) { persistence = new TarPersistence(directory); @@ -224,6 +233,10 @@ return fileStoreMonitor; } + public RemoteStoreMonitor getRemoteStoreMonitor() { + return remoteStoreMonitor; + } + public long getMaxFileSize() { return maxFileSize; } @@ -233,7 +246,7 @@ } private SegmentArchiveManager buildArchiveManager() throws IOException { - return persistence.createArchiveManager(memoryMapping, offHeapAccess, ioMonitor, readOnly && fileStoreMonitor == null ? new FileStoreMonitorAdapter() : fileStoreMonitor); + return persistence.createArchiveManager(memoryMapping, offHeapAccess, ioMonitor, readOnly && fileStoreMonitor == null ? new FileStoreMonitorAdapter() : fileStoreMonitor, remoteStoreMonitor); } } @@ -493,7 +506,7 @@ } /** - * @return the number of segments in the segment store + * @return the number of segments in the segment store */ public int segmentCount() { int count = 0; Index: oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzurePersistence.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzurePersistence.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/AzurePersistence.java (date 1560156985000) @@ -16,12 +16,13 @@ */ package org.apache.jackrabbit.oak.segment.azure; -import com.microsoft.azure.storage.StorageException; +import com.microsoft.azure.storage.*; import com.microsoft.azure.storage.blob.BlobListingDetails; import com.microsoft.azure.storage.blob.CloudAppendBlob; import com.microsoft.azure.storage.blob.CloudBlobDirectory; import com.microsoft.azure.storage.blob.CloudBlockBlob; import com.microsoft.azure.storage.blob.ListBlobItem; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitor; import org.apache.jackrabbit.oak.segment.spi.persistence.GCJournalFile; import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile; import org.apache.jackrabbit.oak.segment.spi.persistence.ManifestFile; @@ -36,7 +37,9 @@ import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Paths; +import java.util.Date; import java.util.EnumSet; +import java.util.concurrent.TimeUnit; public class AzurePersistence implements SegmentNodeStorePersistence { @@ -49,7 +52,8 @@ } @Override - public SegmentArchiveManager createArchiveManager(boolean mmap, boolean offHeapAccess, IOMonitor ioMonitor, FileStoreMonitor fileStoreMonitor) { + public SegmentArchiveManager createArchiveManager(boolean mmap, boolean offHeapAccess, IOMonitor ioMonitor, FileStoreMonitor fileStoreMonitor, RemoteStoreMonitor remoteStoreMonitor) { + azureRemoteStoreMonitor(remoteStoreMonitor); return new AzureArchiveManager(segmentstoreDirectory, ioMonitor, fileStoreMonitor); } @@ -111,4 +115,28 @@ } } + private void azureRemoteStoreMonitor(RemoteStoreMonitor remoteStoreMonitor){ + + OperationContext operationContext = new OperationContext(); + + operationContext.getGlobalRequestCompletedEventHandler().addListener(new StorageEvent() { + + @Override + public void eventOccurred(RequestCompletedEvent eventArg) { + Date startDate = eventArg.getRequestResult().getStartDate(); + Date stopDate = eventArg.getRequestResult().getStopDate(); + long requestDuration = stopDate.getTime() - startDate.getTime(); + remoteStoreMonitor.requestDuration(requestDuration, TimeUnit.MILLISECONDS); + + Exception exception = eventArg.getRequestResult().getException(); + + if(exception == null){ + remoteStoreMonitor.requestCount(); + }else { + remoteStoreMonitor.requestError(); + } + } + }); + } + } Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreRegistrar.java (date 1560156985000) @@ -52,12 +52,7 @@ import org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions; import org.apache.jackrabbit.oak.segment.compaction.SegmentRevisionGC; import org.apache.jackrabbit.oak.segment.compaction.SegmentRevisionGCMBean; -import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder; -import org.apache.jackrabbit.oak.segment.file.FileStoreGCMonitor; -import org.apache.jackrabbit.oak.segment.file.FileStoreStatsMBean; -import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException; -import org.apache.jackrabbit.oak.segment.file.MetricsIOMonitor; +import org.apache.jackrabbit.oak.segment.file.*; import org.apache.jackrabbit.oak.segment.file.tar.TarPersistence; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence; import org.apache.jackrabbit.oak.segment.split.SplitPersistence; @@ -228,7 +223,7 @@ .withMemoryMapping(cfg.getMemoryMapping()) .withGCMonitor(gcMonitor) .withIOMonitor(new MetricsIOMonitor(cfg.getStatisticsProvider())) - .withStatisticsProvider(cfg.getStatisticsProvider()) + .withRemoteStoreMonitor(new MetricsRemoteStoreMonitor(cfg.getStatisticsProvider())) .withGCOptions(gcOptions); if (cfg.hasCustomBlobStore() && cfg.getBlobStore() != null) { Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/RemoteStoreMonitor.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/RemoteStoreMonitor.java (date 1560156985000) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/RemoteStoreMonitor.java (date 1560156985000) @@ -0,0 +1,13 @@ +package org.apache.jackrabbit.oak.segment.spi.monitor; + +import java.util.concurrent.TimeUnit; + +public interface RemoteStoreMonitor { + + public void requestCount(); + + public void requestError(); + + public void requestDuration(long duration, TimeUnit timeUnit); + +} Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsRemoteStoreMonitor.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsRemoteStoreMonitor.java (date 1560156985000) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/MetricsRemoteStoreMonitor.java (date 1560156985000) @@ -0,0 +1,40 @@ +package org.apache.jackrabbit.oak.segment.file; + +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; +import org.apache.jackrabbit.oak.stats.CounterStats; +import org.apache.jackrabbit.oak.stats.StatisticsProvider; +import org.apache.jackrabbit.oak.stats.StatsOptions; +import org.apache.jackrabbit.oak.stats.TimerStats; +import org.jetbrains.annotations.NotNull; +import java.util.concurrent.TimeUnit; + +public class MetricsRemoteStoreMonitor extends RemoteStoreMonitorAdapter { + + public static final String REQUEST_COUNT = "REQUEST_COUNT"; + public static final String REQUEST_ERROR = "REQUEST_ERROR"; + public static final String REQUEST_DURATION = "REQUEST_DURATION"; + + private final CounterStats requestCountStats; + private final CounterStats requestErrorStats; + private final TimerStats requestDurationStats; + + public MetricsRemoteStoreMonitor(@NotNull StatisticsProvider statisticsProvider) { + requestCountStats = statisticsProvider.getCounterStats(REQUEST_COUNT, StatsOptions.DEFAULT); + requestErrorStats = statisticsProvider.getCounterStats(REQUEST_ERROR, StatsOptions.DEFAULT); + requestDurationStats = statisticsProvider.getTimer(REQUEST_DURATION, StatsOptions.METRICS_ONLY); + } + + @Override + public void requestCount() { + requestCountStats.inc(); } + + @Override + public void requestError() { + requestErrorStats.inc(); + } + + @Override + public void requestDuration(long duration, TimeUnit timeUnit) { + requestDurationStats.update(duration, timeUnit); + } +} Index: oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/tool/SegmentStoreMigrator.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/tool/SegmentStoreMigrator.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/tool/SegmentStoreMigrator.java (date 1560156985000) @@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.segment.file.tar.TarPersistence; import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.persistence.Buffer; import org.apache.jackrabbit.oak.segment.spi.persistence.GCJournalFile; import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFileReader; @@ -128,9 +129,9 @@ return; } SegmentArchiveManager sourceManager = source.createArchiveManager(false, false, new IOMonitorAdapter(), - new FileStoreMonitorAdapter()); + new FileStoreMonitorAdapter(), new RemoteStoreMonitorAdapter()); SegmentArchiveManager targetManager = target.createArchiveManager(false, false, new IOMonitorAdapter(), - new FileStoreMonitorAdapter()); + new FileStoreMonitorAdapter(), new RemoteStoreMonitorAdapter()); for (String archiveName : sourceManager.listArchives()) { log.info("{}/{} -> {}", sourceName, archiveName, targetName); try (SegmentArchiveReader reader = sourceManager.forceOpen(archiveName)) { Index: oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarFilesTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarFilesTest.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarFilesTest.java (date 1560162597000) @@ -21,6 +21,7 @@ import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; import org.apache.jackrabbit.oak.segment.file.tar.TarFiles; import org.apache.jackrabbit.oak.segment.file.tar.TarFilesTest; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.junit.Before; import org.junit.ClassRule; @@ -42,6 +43,7 @@ }) .withIOMonitor(new IOMonitorAdapter()) .withFileStoreMonitor(new FileStoreMonitorAdapter()) + .withRemoteStoreMonitor(new RemoteStoreMonitorAdapter()) .withMaxFileSize(MAX_FILE_SIZE) .withPersistence(new AzurePersistence(container.getDirectoryReference("oak"))) .build(); Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java (date 1560163248000) @@ -47,9 +47,7 @@ import org.apache.jackrabbit.oak.segment.file.proc.Proc.Backend; import org.apache.jackrabbit.oak.segment.file.tar.GCGeneration; import org.apache.jackrabbit.oak.segment.file.tar.TarPersistence; -import org.apache.jackrabbit.oak.segment.spi.monitor.CompositeIOMonitor; -import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor; -import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; +import org.apache.jackrabbit.oak.segment.spi.monitor.*; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence; import org.apache.jackrabbit.oak.segment.tool.iotrace.IOTraceLogWriter; import org.apache.jackrabbit.oak.segment.tool.iotrace.IOTraceMonitor; @@ -135,6 +133,9 @@ @NotNull private final Set ioMonitors = newHashSet(); + @NotNull + private RemoteStoreMonitor remoteStoreMonitor; + private boolean strictVersionCheck; private boolean eagerSegmentCaching; @@ -143,7 +144,8 @@ /** * Create a new instance of a {@code FileStoreBuilder} for a file store. - * @param directory directory where the tar files are stored + * + * @param directory directory where the tar files are stored * @return a new {@code FileStoreBuilder} instance. */ @NotNull @@ -159,6 +161,7 @@ /** * Specify the {@link BlobStore}. + * * @param blobStore * @return this instance */ @@ -170,6 +173,7 @@ /** * Maximal size of the generated tar files in MB. + * * @param maxFileSize * @return this instance */ @@ -181,7 +185,8 @@ /** * Size of the segment cache in MB. - * @param segmentCacheSize None negative cache size + * + * @param segmentCacheSize None negative cache size * @return this instance */ @NotNull @@ -192,7 +197,8 @@ /** * Size of the string cache in MB. - * @param stringCacheSize None negative cache size + * + * @param stringCacheSize None negative cache size * @return this instance */ @NotNull @@ -203,7 +209,8 @@ /** * Size of the template cache in MB. - * @param templateCacheSize None negative cache size + * + * @param templateCacheSize None negative cache size * @return this instance */ @NotNull @@ -214,7 +221,8 @@ /** * Number of items to keep in the string deduplication cache - * @param stringDeduplicationCacheSize None negative cache size + * + * @param stringDeduplicationCacheSize None negative cache size * @return this instance */ @NotNull @@ -225,7 +233,8 @@ /** * Number of items to keep in the template deduplication cache - * @param templateDeduplicationCacheSize None negative cache size + * + * @param templateDeduplicationCacheSize None negative cache size * @return this instance */ @NotNull @@ -236,7 +245,8 @@ /** * Number of items to keep in the node deduplication cache - * @param nodeDeduplicationCacheSize None negative cache size. Must be a power of 2. + * + * @param nodeDeduplicationCacheSize None negative cache size. Must be a power of 2. * @return this instance */ @NotNull @@ -247,6 +257,7 @@ /** * Turn memory mapping on or off + * * @param memoryMapping * @return this instance */ @@ -258,6 +269,7 @@ /** * Turn off heap access on or off + * * @param offHeapAccess * @return this instance */ @@ -269,6 +281,7 @@ /** * Set memory mapping to the default value based on OS properties + * * @return this instance */ @NotNull @@ -279,6 +292,7 @@ /** * {@link GCMonitor} for monitoring this files store's gc process. + * * @param gcMonitor * @return this instance */ @@ -290,6 +304,7 @@ /** * {@link StatisticsProvider} for collecting statistics related to FileStore + * * @param statisticsProvider * @return this instance */ @@ -301,6 +316,7 @@ /** * {@link SegmentGCOptions} the garbage collection options of the store + * * @param gcOptions * @return this instance */ @@ -312,6 +328,7 @@ /** * {@link SegmentNotFoundExceptionListener} listener for {@code SegmentNotFoundException} + * * @param snfeListener, the actual listener * @return this instance */ @@ -327,9 +344,16 @@ return this; } + @NotNull + public FileStoreBuilder withRemoteStoreMonitor(@NotNull RemoteStoreMonitor remoteStoreMonitor) { + this.remoteStoreMonitor = remoteStoreMonitor; + return this; + } + /** * Log IO reads at debug level to the passed logger - * @param logger logger for logging IO reads + * + * @param logger logger for logging IO reads * @return this. */ @NotNull @@ -345,7 +369,8 @@ * will fail to start if the store version does not exactly match this Oak version. * This is useful to e.g. avoid inadvertent upgrades during when running offline * compaction accidentally against an older version of a store. - * @param strictVersionCheck enables strict version checking iff {@code true}. + * + * @param strictVersionCheck enables strict version checking iff {@code true}. * @return this instance */ @NotNull @@ -514,9 +539,8 @@ } /** - * @return creates or returns the {@code WriterCacheManager} this builder passes or - * passed to the store on {@link #build()}. - * + * @return creates or returns the {@code WriterCacheManager} this builder passes or + * passed to the store on {@link #build()}. * @see #withNodeDeduplicationCacheSize(int) * @see #withStringDeduplicationCacheSize(int) * @see #withTemplateDeduplicationCacheSize(int) @@ -532,10 +556,17 @@ IOMonitor getIOMonitor() { return ioMonitors.isEmpty() - ? new IOMonitorAdapter() - : new CompositeIOMonitor(ioMonitors); + ? new IOMonitorAdapter() + : new CompositeIOMonitor(ioMonitors); } + RemoteStoreMonitor getRemoteStoreMonitor() { + if (remoteStoreMonitor == null) { + return new RemoteStoreMonitorAdapter(); + } + return remoteStoreMonitor; + } + boolean getStrictVersionCheck() { return strictVersionCheck; } @@ -569,8 +600,8 @@ int templateCacheSize, int nodeCacheSize) { super(RecordCache.factory(stringCacheSize, new StringCacheWeigher()), - RecordCache.factory(templateCacheSize, new TemplateCacheWeigher()), - PriorityCache.factory(nodeCacheSize, new NodeCacheWeigher())); + RecordCache.factory(templateCacheSize, new TemplateCacheWeigher()), + PriorityCache.factory(nodeCacheSize, new NodeCacheWeigher())); } void evictOldGeneration(final int newGeneration) { Index: oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarWriterTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarWriterTest.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarWriterTest.java (date 1560156985000) @@ -20,6 +20,7 @@ import com.microsoft.azure.storage.blob.CloudBlobContainer; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; import org.apache.jackrabbit.oak.segment.file.tar.TarWriterTest; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.junit.Before; import org.junit.ClassRule; @@ -40,7 +41,7 @@ try { monitor = new TestFileStoreMonitor(); container = azurite.getContainer("oak-test"); - archiveManager = new AzurePersistence(container.getDirectoryReference("oak")).createArchiveManager(true, false, new IOMonitorAdapter(), monitor); + archiveManager = new AzurePersistence(container.getDirectoryReference("oak")).createArchiveManager(true, false, new IOMonitorAdapter(), monitor, new RemoteStoreMonitorAdapter()); } catch (StorageException | InvalidKeyException | URISyntaxException e) { throw new IOException(e); } Index: oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarFileTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarFileTest.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureTarFileTest.java (date 1560156985000) @@ -21,6 +21,7 @@ import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; import org.apache.jackrabbit.oak.segment.file.tar.TarFileTest; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.junit.Before; import org.junit.ClassRule; import org.junit.Ignore; @@ -42,7 +43,7 @@ public void setUp() throws IOException { try { container = azurite.getContainer("oak-test"); - archiveManager = new AzurePersistence(container.getDirectoryReference("oak")).createArchiveManager(true, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter()); + archiveManager = new AzurePersistence(container.getDirectoryReference("oak")).createArchiveManager(true, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter(), new RemoteStoreMonitorAdapter()); } catch (StorageException | InvalidKeyException | URISyntaxException e) { throw new IOException(e); } Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java (date 1560156985000) @@ -160,6 +160,7 @@ .withMemoryMapping(memoryMapping) .withTarRecovery(recovery) .withIOMonitor(ioMonitor) + .withRemoteStoreMonitor(remoteStoreMonitor) .withFileStoreMonitor(stats) .withMaxFileSize(builder.getMaxFileSize() * MB) .withPersistence(builder.getPersistence()) Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentNodeStorePersistence.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentNodeStorePersistence.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/persistence/SegmentNodeStorePersistence.java (date 1560156985000) @@ -22,6 +22,7 @@ import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitor; /** * This type is a main entry point for the segment node store persistence. It's @@ -44,7 +45,7 @@ * @throws IOException */ SegmentArchiveManager createArchiveManager(boolean memoryMapping, boolean offHeapAccess, IOMonitor ioMonitor, - FileStoreMonitor fileStoreMonitor) throws IOException; + FileStoreMonitor fileStoreMonitor, RemoteStoreMonitor remoteStoreMonitor) throws IOException; /** * Check if the segment store already contains any segments Index: oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/tool/ToolUtils.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/tool/ToolUtils.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/main/java/org/apache/jackrabbit/oak/segment/azure/tool/ToolUtils.java (date 1560156985000) @@ -45,6 +45,7 @@ import org.apache.jackrabbit.oak.segment.file.tar.TarPersistence; import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence; import org.apache.jackrabbit.oak.segment.spi.persistence.Buffer; @@ -108,7 +109,7 @@ SegmentArchiveManager archiveManager = null; try { archiveManager = persistence.createArchiveManager(false, false, new IOMonitorAdapter(), - new FileStoreMonitorAdapter()); + new FileStoreMonitorAdapter(), new RemoteStoreMonitorAdapter()); } catch (IOException e) { throw new IllegalArgumentException( "Could not access the Azure Storage. Please verify the path provided!"); Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/AbstractFileStore.java (date 1560156985000) @@ -52,6 +52,7 @@ import org.apache.jackrabbit.oak.segment.file.tar.TarFiles; import org.apache.jackrabbit.oak.segment.file.tar.TarRecovery; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitor; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence; import org.apache.jackrabbit.oak.segment.spi.persistence.Buffer; import org.apache.jackrabbit.oak.spi.blob.BlobStore; @@ -128,6 +129,8 @@ protected final IOMonitor ioMonitor; + protected final RemoteStoreMonitor remoteStoreMonitor; + AbstractFileStore(final FileStoreBuilder builder) { this.directory = builder.getDirectory(); this.tracker = new SegmentTracker(new SegmentIdFactory() { @@ -148,6 +151,7 @@ this.memoryMapping = builder.getMemoryMapping(); this.offHeapAccess = builder.getOffHeapAccess(); this.ioMonitor = builder.getIOMonitor(); + this.remoteStoreMonitor = builder.getRemoteStoreMonitor(); this.segmentBufferMonitor = new SegmentBufferMonitor(builder.getStatsProvider()); } Index: oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFilesTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFilesTest.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/file/tar/TarFilesTest.java (date 1560163606000) @@ -43,6 +43,7 @@ import org.apache.jackrabbit.oak.segment.file.tar.TarFiles.CleanupResult; import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.persistence.Buffer; import org.junit.After; import org.junit.Before; @@ -77,6 +78,7 @@ .withIOMonitor(new IOMonitorAdapter()) .withFileStoreMonitor(new FileStoreMonitorAdapter()) .withMaxFileSize(MAX_FILE_SIZE) + .withRemoteStoreMonitor(new RemoteStoreMonitorAdapter()) .build(); } Index: oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureArchiveManagerTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureArchiveManagerTest.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/azure/AzureArchiveManagerTest.java (date 1560156985000) @@ -24,6 +24,7 @@ import org.apache.jackrabbit.oak.segment.file.FileStore; import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder; import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager; import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; @@ -61,7 +62,7 @@ @Test public void testRecovery() throws StorageException, URISyntaxException, IOException { - SegmentArchiveManager manager = new AzurePersistence(container.getDirectoryReference("oak")).createArchiveManager(false, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter()); + SegmentArchiveManager manager = new AzurePersistence(container.getDirectoryReference("oak")).createArchiveManager(false, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter(), new RemoteStoreMonitorAdapter()); SegmentArchiveWriter writer = manager.create("data00000a.tar"); List uuids = new ArrayList<>(); Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/ReadOnlyFileStore.java (date 1560156985000) @@ -73,6 +73,7 @@ .withDirectory(directory) .withTarRecovery(recovery) .withIOMonitor(ioMonitor) + .withRemoteStoreMonitor(remoteStoreMonitor) .withMemoryMapping(memoryMapping) .withReadOnly() .withPersistence(builder.getPersistence()) Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/RemoteStoreMonitorAdapter.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/RemoteStoreMonitorAdapter.java (date 1560156985000) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/spi/monitor/RemoteStoreMonitorAdapter.java (date 1560156985000) @@ -0,0 +1,22 @@ +package org.apache.jackrabbit.oak.segment.spi.monitor; + +import java.util.concurrent.TimeUnit; + +public class RemoteStoreMonitorAdapter implements RemoteStoreMonitor { + + + @Override + public void requestCount() { + // Intentionally left blank + } + + @Override + public void requestError() { + // Intentionally left blank + } + + @Override + public void requestDuration(long duration, TimeUnit timeUnit) { + // Intentionally left blank + } +} Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreProcBackend.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreProcBackend.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreProcBackend.java (date 1560156985000) @@ -38,6 +38,7 @@ import org.apache.jackrabbit.oak.segment.file.proc.Proc.Backend; import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveEntry; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveReader; @@ -55,7 +56,7 @@ FileStoreProcBackend(AbstractFileStore fileStore, SegmentNodeStorePersistence persistence) throws IOException { this.fileStore = fileStore; this.persistence = persistence; - this.archiveManager = persistence.createArchiveManager(true, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter()); + this.archiveManager = persistence.createArchiveManager(true, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter(), new RemoteStoreMonitorAdapter()); } @Override Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarPersistence.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarPersistence.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/tar/TarPersistence.java (date 1560156985000) @@ -30,6 +30,7 @@ import org.apache.jackrabbit.oak.segment.file.LocalManifestFile; import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitor; import org.apache.jackrabbit.oak.segment.spi.persistence.GCJournalFile; import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile; import org.apache.jackrabbit.oak.segment.spi.persistence.ManifestFile; @@ -62,7 +63,7 @@ @Override public SegmentArchiveManager createArchiveManager(boolean memoryMapping, boolean offHeapAccess, IOMonitor ioMonitor, - FileStoreMonitor fileStoreMonitor) { + FileStoreMonitor fileStoreMonitor, RemoteStoreMonitor remoteStoreMonitor) { return new SegmentTarManager(directory, fileStoreMonitor, ioMonitor, memoryMapping, offHeapAccess); } Index: oak-segment-azure/src/test/java/oak/apache/jackrabbit/oak/segment/azure/tool/SegmentCopyTestBase.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/test/java/oak/apache/jackrabbit/oak/segment/azure/tool/SegmentCopyTestBase.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/test/java/oak/apache/jackrabbit/oak/segment/azure/tool/SegmentCopyTestBase.java (date 1560156985000) @@ -37,10 +37,7 @@ import org.apache.jackrabbit.oak.segment.azure.tool.SegmentCopy; import org.apache.jackrabbit.oak.segment.azure.tool.ToolUtils.SegmentStoreType; import org.apache.jackrabbit.oak.segment.file.FileStore; -import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor; -import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; -import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor; -import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; +import org.apache.jackrabbit.oak.segment.spi.monitor.*; import org.apache.jackrabbit.oak.segment.spi.persistence.GCJournalFile; import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFileReader; import org.apache.jackrabbit.oak.segment.spi.persistence.ManifestFile; @@ -88,11 +85,12 @@ assertEquals(0, code); IOMonitor ioMonitor = new IOMonitorAdapter(); + RemoteStoreMonitor remoteStoreMonitor = new RemoteStoreMonitorAdapter(); FileStoreMonitor fileStoreMonitor = new FileStoreMonitorAdapter(); SegmentArchiveManager srcArchiveManager = srcPersistence.createArchiveManager(false, false, ioMonitor, - fileStoreMonitor); + fileStoreMonitor, remoteStoreMonitor); SegmentArchiveManager destArchiveManager = destPersistence.createArchiveManager(false, false, ioMonitor, - fileStoreMonitor); + fileStoreMonitor, remoteStoreMonitor); checkArchives(srcArchiveManager, destArchiveManager); checkJournal(srcPersistence, destPersistence); Index: oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/split/SplitPersistence.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/split/SplitPersistence.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/split/SplitPersistence.java (date 1560156985000) @@ -16,10 +16,7 @@ */ package org.apache.jackrabbit.oak.segment.split; -import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitor; -import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; -import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitor; -import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; +import org.apache.jackrabbit.oak.segment.spi.monitor.*; import org.apache.jackrabbit.oak.segment.spi.persistence.GCJournalFile; import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFile; import org.apache.jackrabbit.oak.segment.spi.persistence.JournalFileReader; @@ -86,7 +83,7 @@ } private Optional getLastArchive() throws IOException { - SegmentArchiveManager manager = roPersistence.createArchiveManager(false, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter()); + SegmentArchiveManager manager = roPersistence.createArchiveManager(false, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter(), new RemoteStoreMonitorAdapter()); List archives = manager.listArchives(); if (archives.isEmpty()) { return Optional.empty(); @@ -97,14 +94,14 @@ } @Override - public SegmentArchiveManager createArchiveManager(boolean memoryMapping, boolean offHeapAccess, IOMonitor ioMonitor, FileStoreMonitor fileStoreMonitor) throws IOException { + public SegmentArchiveManager createArchiveManager(boolean memoryMapping, boolean offHeapAccess, IOMonitor ioMonitor, FileStoreMonitor fileStoreMonitor, RemoteStoreMonitor remoteStoreMonitor) throws IOException { if (lastRoArchive.isPresent()) { return new SplitSegmentArchiveManager( - roPersistence.createArchiveManager(memoryMapping, offHeapAccess, ioMonitor, fileStoreMonitor), - rwPersistence.createArchiveManager(memoryMapping, offHeapAccess, ioMonitor, fileStoreMonitor), + roPersistence.createArchiveManager(memoryMapping, offHeapAccess, ioMonitor, fileStoreMonitor, remoteStoreMonitor), + rwPersistence.createArchiveManager(memoryMapping, offHeapAccess, ioMonitor, fileStoreMonitor, new RemoteStoreMonitorAdapter()), lastRoArchive.get()); } else { - return rwPersistence.createArchiveManager(memoryMapping, offHeapAccess, ioMonitor, fileStoreMonitor); + return rwPersistence.createArchiveManager(memoryMapping, offHeapAccess, ioMonitor, fileStoreMonitor, new RemoteStoreMonitorAdapter()); } } Index: oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/split/SplitPersistenceTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/split/SplitPersistenceTest.java (revision e1dd43d0445816e109893e05235ab65c6e8f5d21) +++ oak-segment-azure/src/test/java/org/apache/jackrabbit/oak/segment/split/SplitPersistenceTest.java (date 1560156985000) @@ -26,11 +26,11 @@ import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder; import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException; import org.apache.jackrabbit.oak.segment.file.tar.TarPersistence; -import org.apache.jackrabbit.oak.segment.file.tar.binaries.BinaryReferencesIndex; import org.apache.jackrabbit.oak.segment.file.tar.binaries.BinaryReferencesIndexLoader; import org.apache.jackrabbit.oak.segment.file.tar.binaries.InvalidBinaryReferencesIndexException; import org.apache.jackrabbit.oak.segment.spi.monitor.FileStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.monitor.IOMonitorAdapter; +import org.apache.jackrabbit.oak.segment.spi.monitor.RemoteStoreMonitorAdapter; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveManager; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentArchiveReader; import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence; @@ -134,7 +134,7 @@ splitFileStore.close(); splitFileStore = null; - SegmentArchiveManager manager = splitPersistence.createArchiveManager(true, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter()); + SegmentArchiveManager manager = splitPersistence.createArchiveManager(true, false, new IOMonitorAdapter(), new FileStoreMonitorAdapter(), new RemoteStoreMonitorAdapter()); for (String archive : manager.listArchives()) { SegmentArchiveReader reader = manager.open(archive); BinaryReferencesIndexLoader.parseBinaryReferencesIndex(reader.getBinaryReferences());