From dc23a7cc421f09da42192c54ea8d54fb2ca30dfb Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Wed, 27 Jun 2012 13:55:25 -0700 Subject: [PATCH] Make InMemoryRepository pack names globally unique It was easy to create multiple packs with exactly the same name and same DfsRepositoryDescription in a test, which can poison the DfsBlockCache. The javadoc for DfsObjDatabase.newPack() explicitly says pack names should be unique within an entire DFS, so do this by making the packId AtomicInteger static. Arguably, test writers shouldn't be doing things like putting 'new DfsRepositoryDescription("test")' in a setUp() method, but that's a natural thing to do, and we don't document this restriction anywhere. Change-Id: I9477413ab3950d83b7d17e173fbc0a3e064896e3 --- .../src/org/eclipse/jgit/storage/dfs/InMemoryRepository.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/InMemoryRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/InMemoryRepository.java index fb62acedf..270f23fae 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/InMemoryRepository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/InMemoryRepository.java @@ -26,6 +26,8 @@ * is garbage collected. Closing the repository has no impact on its memory. */ public class InMemoryRepository extends DfsRepository { + private static final AtomicInteger packId = new AtomicInteger(); + private final DfsObjDatabase objdb; private final DfsRefDatabase refdb; @@ -60,7 +62,6 @@ public DfsRefDatabase getRefDatabase() { } private class MemObjDatabase extends DfsObjDatabase { - private final AtomicInteger packId = new AtomicInteger(); private List packs = new ArrayList(); MemObjDatabase(DfsRepository repo) {