]> source.dussan.org Git - jgit.git/commitdiff
DfsStreamKey: Replace ForReverseIndex to separate metrics. 89/196889/3
authorAnna Papitto <annapapitto@google.com>
Fri, 11 Nov 2022 18:44:37 +0000 (10:44 -0800)
committerIvan Frade <ifrade@google.com>
Thu, 17 Nov 2022 17:38:36 +0000 (12:38 -0500)
Keys used for identifying reverse indexes in the DfsBlockCache use a
custom subclass ForReverseIndex because there was no PackExt for them.
This conflates BlockCacheMetrics for reverse indexes with those for
packs, since the key falls back onto 0 when there is no extension.

Replace the custom ForReverseIndex with a DfsStreamKey usage to bring
keys for the new REVERSE_INDEX extension in line with INDEX and BITMAP
and separate reverse index and pack BlockCacheMetrics.

Change-Id: I305e2c16d2a8cb2a824855ea92e0c9a9b188fce5
Signed-off-by: Anna Papitto <annapapitto@google.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsBlockCacheTest.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsStreamKey.java

index ab588cb71ef6ba091d39d446df1353c32af82b8f..3dd4190c83d90812a3ba57537619d4e26b4c0458 100644 (file)
@@ -289,8 +289,7 @@ public class DfsBlockCacheTest {
 
                assertEquals(1, cache.getMissCount()[PackExt.BITMAP_INDEX.ordinal()]);
                assertEquals(1, cache.getMissCount()[PackExt.INDEX.ordinal()]);
-               // Reverse index has no pack extension, it defaults to 0.
-               assertEquals(1, cache.getMissCount()[0]);
+               assertEquals(1, cache.getMissCount()[PackExt.REVERSE_INDEX.ordinal()]);
        }
 
        @SuppressWarnings("resource")
@@ -319,7 +318,7 @@ public class DfsBlockCacheTest {
                waitForExecutorPoolTermination();
                assertEquals(2, cache.getMissCount()[PackExt.BITMAP_INDEX.ordinal()]);
                assertEquals(2, cache.getMissCount()[PackExt.INDEX.ordinal()]);
-               assertEquals(2, cache.getMissCount()[0]);
+               assertEquals(2, cache.getMissCount()[PackExt.REVERSE_INDEX.ordinal()]);
        }
 
        @SuppressWarnings("resource")
@@ -348,7 +347,7 @@ public class DfsBlockCacheTest {
                waitForExecutorPoolTermination();
                assertEquals(2, cache.getMissCount()[PackExt.BITMAP_INDEX.ordinal()]);
                assertEquals(2, cache.getMissCount()[PackExt.INDEX.ordinal()]);
-               assertEquals(2, cache.getMissCount()[0]);
+               assertEquals(2, cache.getMissCount()[PackExt.REVERSE_INDEX.ordinal()]);
        }
 
        @SuppressWarnings("resource")
@@ -380,7 +379,7 @@ public class DfsBlockCacheTest {
                assertEquals(2, cache.getMissCount()[PackExt.BITMAP_INDEX.ordinal()]);
                // Index is loaded once for each repo.
                assertEquals(2, cache.getMissCount()[PackExt.INDEX.ordinal()]);
-               assertEquals(2, cache.getMissCount()[0]);
+               assertEquals(2, cache.getMissCount()[PackExt.REVERSE_INDEX.ordinal()]);
        }
 
        @Test
@@ -402,7 +401,7 @@ public class DfsBlockCacheTest {
 
                assertEquals(1, cache.getMissCount()[PackExt.BITMAP_INDEX.ordinal()]);
                assertEquals(1, cache.getMissCount()[PackExt.INDEX.ordinal()]);
-               assertEquals(1, cache.getMissCount()[0]);
+               assertEquals(1, cache.getMissCount()[PackExt.REVERSE_INDEX.ordinal()]);
        }
 
        @Test
@@ -426,7 +425,7 @@ public class DfsBlockCacheTest {
 
                assertEquals(1, cache.getMissCount()[PackExt.BITMAP_INDEX.ordinal()]);
                assertEquals(1, cache.getMissCount()[PackExt.INDEX.ordinal()]);
-               assertEquals(1, cache.getMissCount()[0]);
+               assertEquals(1, cache.getMissCount()[PackExt.REVERSE_INDEX.ordinal()]);
        }
 
        private void resetCache() {
index f7a2c94d48e169022d8c69405b91f6cb0c92ae1a..15511fed308bad54520eb891dd47fce83adc3ff8 100644 (file)
@@ -16,6 +16,7 @@ import static org.eclipse.jgit.internal.storage.dfs.DfsObjDatabase.PackSource.UN
 import static org.eclipse.jgit.internal.storage.pack.PackExt.BITMAP_INDEX;
 import static org.eclipse.jgit.internal.storage.pack.PackExt.INDEX;
 import static org.eclipse.jgit.internal.storage.pack.PackExt.PACK;
+import static org.eclipse.jgit.internal.storage.pack.PackExt.REVERSE_INDEX;
 
 import java.io.BufferedInputStream;
 import java.io.EOFException;
@@ -220,8 +221,7 @@ public final class DfsPackFile extends BlockBasedFile {
                }
 
                PackIndex idx = idx(ctx);
-               DfsStreamKey revKey = new DfsStreamKey.ForReverseIndex(
-                               desc.getStreamKey(INDEX));
+               DfsStreamKey revKey = desc.getStreamKey(REVERSE_INDEX);
                AtomicBoolean cacheHit = new AtomicBoolean(true);
                DfsBlockCache.Ref<PackReverseIndex> revref = cache.getOrLoadRef(revKey,
                                REF_POSITION, () -> {
index 4a6723f8309c066b5f7a1ebb35658fb7eeae46fd..f3f30914f6af8c5db61768f1a59c9bd2c976021c 100644 (file)
@@ -95,19 +95,4 @@ public abstract class DfsStreamKey {
                        return false;
                }
        }
-
-       static final class ForReverseIndex extends DfsStreamKey {
-               private final DfsStreamKey idxKey;
-
-               ForReverseIndex(DfsStreamKey idxKey) {
-                       super(idxKey.hash + 1, null);
-                       this.idxKey = idxKey;
-               }
-
-               @Override
-               public boolean equals(Object o) {
-                       return o instanceof ForReverseIndex
-                                       && idxKey.equals(((ForReverseIndex) o).idxKey);
-               }
-       }
 }