diff --git oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
index 5798188..150fe93 100644
--- oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
+++ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
@@ -160,6 +160,11 @@ public class SegmentTracker {
         compactionMap.set(compaction);
     }
 
+    public synchronized void dropCache() {
+        segments.clear();
+        currentSize = 0;
+    }
+
     @Nonnull
     CompactionMap getCompactionMap() {
         return compactionMap.get();
diff --git oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/CompactionAndCleanupTest.java oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/CompactionAndCleanupTest.java
index 90d4f11..55448bd 100644
--- oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/CompactionAndCleanupTest.java
+++ oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/CompactionAndCleanupTest.java
@@ -54,7 +54,6 @@ public class CompactionAndCleanupTest {
     }
 
     @Test
-    @Ignore("OAK-2045")
     public void compactionAndWeakReferenceMagic() throws Exception{
         final int MB = 1024 * 1024;
         final int blobSize = 5 * MB;
@@ -126,7 +125,7 @@ public class CompactionAndCleanupTest {
     private static void cleanup(FileStore fileStore) throws IOException {
         fileStore.getTracker().setCompactionMap(new Compactor(null).getCompactionMap());
         fileStore.getTracker().getWriter().dropCache();
-
+        fileStore.getTracker().dropCache();
         fileStore.cleanup();
     }
 
