From fc6b898cbe4f0c13026c30e57a4882689a1c49b9 Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Thu, 14 Mar 2013 16:10:44 -0700 Subject: [PATCH] Simplfy caching of DfsPackDescription from PackWriter.Statistics Let the pack description copy the relevant stats values. This moves it out of the garbage collector and compactor algorithms, co-locating with something that might care. Remove some unnecessary code from the DfsPackCompactor, the stats tracks the same information and can supply it. Change-Id: Id64ab38d507c0ed19ae0d106862d175b7364eba3 --- .../eclipse/jgit/storage/dfs/DfsGarbageCollector.java | 3 --- .../eclipse/jgit/storage/dfs/DfsPackCompactor.java | 11 +++++------ .../eclipse/jgit/storage/dfs/DfsPackDescription.java | 5 +++++ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsGarbageCollector.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsGarbageCollector.java index 76b36a416a..40555dde16 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsGarbageCollector.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsGarbageCollector.java @@ -403,9 +403,6 @@ public class DfsGarbageCollector { PackWriter.Statistics stats = pw.getStatistics(); pack.setPackStats(stats); - pack.setFileSize(PACK, stats.getTotalBytes()); - pack.setObjectCount(stats.getTotalObjects()); - pack.setDeltaCount(stats.getTotalDeltas()); objectsPacked += stats.getTotalObjects(); newPackStats.add(stats); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackCompactor.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackCompactor.java index 904ba4efc0..3f6a022141 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackCompactor.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackCompactor.java @@ -283,20 +283,19 @@ public class DfsPackCompactor { pm.endTask(); } - private void writePack(DfsObjDatabase objdb, DfsPackDescription pack, + private static void writePack(DfsObjDatabase objdb, + DfsPackDescription pack, PackWriter pw, ProgressMonitor pm) throws IOException { DfsOutputStream out = objdb.writeFile(pack, PACK); try { - CountingOutputStream cnt = new CountingOutputStream(out); - pw.writePack(pm, pm, cnt); - pack.setObjectCount(pw.getObjectCount()); - pack.setFileSize(PACK, cnt.getCount()); + pw.writePack(pm, pm, out); } finally { out.close(); } } - private void writeIndex(DfsObjDatabase objdb, DfsPackDescription pack, + private static void writeIndex(DfsObjDatabase objdb, + DfsPackDescription pack, PackWriter pw) throws IOException { DfsOutputStream out = objdb.writeFile(pack, INDEX); try { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackDescription.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackDescription.java index 746a64aed5..c4a531e7be 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackDescription.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackDescription.java @@ -43,6 +43,8 @@ package org.eclipse.jgit.storage.dfs; +import static org.eclipse.jgit.storage.pack.PackExt.PACK; + import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -248,6 +250,9 @@ public class DfsPackDescription implements Comparable { DfsPackDescription setPackStats(PackWriter.Statistics stats) { this.stats = stats; + setFileSize(PACK, stats.getTotalBytes()); + setObjectCount(stats.getTotalObjects()); + setDeltaCount(stats.getTotalDeltas()); return this; } -- 2.39.5