@ -100,12 +100,6 @@ public class DfsGarbageCollector {
private Set < ObjectId > nonHeads ;
private Set < ObjectId > nonHeads ;
/** Sum of object counts in {@link #packsBefore}. */
private long objectsBefore ;
/** Sum of object counts iN {@link #newPackDesc}. */
private long objectsPacked ;
private Set < ObjectId > tagTargets ;
private Set < ObjectId > tagTargets ;
/ * *
/ * *
@ -288,7 +282,7 @@ public class DfsGarbageCollector {
}
}
private void packRest ( ProgressMonitor pm ) throws IOException {
private void packRest ( ProgressMonitor pm ) throws IOException {
if ( nonHeads . isEmpty ( ) | | objectsPacked = = getObjectsBefore ( ) )
if ( nonHeads . isEmpty ( ) )
return ;
return ;
PackWriter pw = newPackWriter ( ) ;
PackWriter pw = newPackWriter ( ) ;
@ -304,14 +298,11 @@ public class DfsGarbageCollector {
}
}
private void packGarbage ( ProgressMonitor pm ) throws IOException {
private void packGarbage ( ProgressMonitor pm ) throws IOException {
if ( objectsPacked = = getObjectsBefore ( ) )
return ;
// TODO(sop) This is ugly. The garbage pack needs to be deleted.
// TODO(sop) This is ugly. The garbage pack needs to be deleted.
PackWriter pw = newPackWriter ( ) ;
PackWriter pw = newPackWriter ( ) ;
try {
try {
RevWalk pool = new RevWalk ( ctx ) ;
RevWalk pool = new RevWalk ( ctx ) ;
pm . beginTask ( "Finding garbage" , ( int ) getO bjectsBefore( ) ) ;
pm . beginTask ( "Finding garbage" , o bjectsBefore( ) ) ;
for ( DfsPackFile oldPack : packsBefore ) {
for ( DfsPackFile oldPack : packsBefore ) {
PackIndex oldIdx = oldPack . getPackIndex ( ctx ) ;
PackIndex oldIdx = oldPack . getPackIndex ( ctx ) ;
for ( PackIndex . MutableEntry ent : oldIdx ) {
for ( PackIndex . MutableEntry ent : oldIdx ) {
@ -343,12 +334,11 @@ public class DfsGarbageCollector {
return ref . getName ( ) . startsWith ( Constants . R_HEADS ) ;
return ref . getName ( ) . startsWith ( Constants . R_HEADS ) ;
}
}
private long getObjectsBefore ( ) {
private int objectsBefore ( ) {
if ( objectsBefore = = 0 ) {
int cnt = 0 ;
for ( DfsPackFile p : packsBefore )
for ( DfsPackFile p : packsBefore )
objectsBefore + = p . getPackDescription ( ) . getObjectCount ( ) ;
cnt + = p . getPackDescription ( ) . getObjectCount ( ) ;
}
return cnt ;
return objectsBefore ;
}
}
private PackWriter newPackWriter ( ) {
private PackWriter newPackWriter ( ) {
@ -403,7 +393,6 @@ public class DfsGarbageCollector {
PackWriter . Statistics stats = pw . getStatistics ( ) ;
PackWriter . Statistics stats = pw . getStatistics ( ) ;
pack . setPackStats ( stats ) ;
pack . setPackStats ( stats ) ;
objectsPacked + = stats . getTotalObjects ( ) ;
newPackStats . add ( stats ) ;
newPackStats . add ( stats ) ;
DfsBlockCache . getInstance ( ) . getOrCreate ( pack , null ) ;
DfsBlockCache . getInstance ( ) . getOrCreate ( pack , null ) ;