diff --git oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java index 7dd4667..90fc1f8 100644 --- oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java +++ oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java @@ -314,7 +314,7 @@ public class FileStore implements SegmentStore, Closeable { } } - long initialSize = size(); + long initialSize = initialSize(); this.approximateSize = new AtomicLong(initialSize); this.stats = new FileStoreStats(builder.getStatsProvider(), this, initialSize); @@ -581,7 +581,7 @@ public class FileStore implements SegmentStore, Closeable { return dataFiles; } - public final long size() { + private long initialSize() { fileStoreLock.readLock().lock(); try { long size = writeFile != null ? writeFile.length() : 0; @@ -593,6 +593,10 @@ public class FileStore implements SegmentStore, Closeable { fileStoreLock.readLock().unlock(); } } + + public final long size() { + return approximateSize.get(); + } public int readerCount(){ fileStoreLock.readLock().lock(); @@ -793,7 +797,6 @@ public class FileStore implements SegmentStore, Closeable { } long finalSize = size(); - approximateSize.set(finalSize); stats.reclaimed(initialSize - finalSize); // FIXME OAK-4106: Reclaimed size reported by FileStore.cleanup is off gcListener.cleaned(initialSize - finalSize, finalSize); @@ -1389,7 +1392,7 @@ public class FileStore implements SegmentStore, Closeable { } private void checkDiskSpace() { - long repositoryDiskSpace = approximateSize.get(); + long repositoryDiskSpace = size(); long availableDiskSpace = directory.getFreeSpace(); boolean updated = gcOptions.isDiskSpaceSufficient(repositoryDiskSpace, availableDiskSpace); boolean previous = sufficientDiskSpace.getAndSet(updated);