From 843c42bafae020e2e0e6d49befc6db960f61c66c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 15 Apr 2013 08:18:02 -0400 Subject: [PATCH] Completed migration to JGit 3.0.0-SNAPSHOT --- src/main/java/com/gitblit/GCExecutor.java | 26 ++++++++++++++------------ 1 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/gitblit/GCExecutor.java b/src/main/java/com/gitblit/GCExecutor.java index 19393aa..0a0c8ad 100644 --- a/src/main/java/com/gitblit/GCExecutor.java +++ b/src/main/java/com/gitblit/GCExecutor.java @@ -20,14 +20,14 @@ import java.util.Calendar; import java.util.Date; import java.util.Map; +import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import org.eclipse.jgit.api.GarbageCollectCommand; +import org.eclipse.jgit.api.Git; import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.internal.storage.file.FileRepository; -import org.eclipse.jgit.internal.storage.file.GC; -import org.eclipse.jgit.internal.storage.file.GC.RepoStatistics; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -141,10 +141,10 @@ } boolean garbageCollected = false; RepositoryModel model = null; - FileRepository repository = null; + Repository repository = null; try { model = GitBlit.self().getRepositoryModel(repositoryName); - repository = (FileRepository) GitBlit.self().getRepository(repositoryName); + repository = GitBlit.self().getRepository(repositoryName); if (repository == null) { logger.warn(MessageFormat.format("GCExecutor is missing repository {0}?!?", repositoryName)); continue; @@ -165,8 +165,9 @@ logger.debug(MessageFormat.format("GCExecutor locked idle repository {0}", repositoryName)); - GC gc = new GC(repository); - RepoStatistics stats = gc.getStatistics(); + Git git = new Git(repository); + GarbageCollectCommand gc = git.gc(); + Properties stats = gc.getStatistics(); // determine if this is a scheduled GC Calendar cal = Calendar.getInstance(); @@ -181,16 +182,17 @@ // determine if filesize triggered GC long gcThreshold = FileUtils.convertSizeToLong(model.gcThreshold, 500*1024L); - boolean hasEnoughGarbage = stats.sizeOfLooseObjects >= gcThreshold; + long sizeOfLooseObjects = (Long) stats.get("sizeOfLooseObjects"); + boolean hasEnoughGarbage = sizeOfLooseObjects >= gcThreshold; // if we satisfy one of the requirements, GC - boolean hasGarbage = stats.sizeOfLooseObjects > 0; + boolean hasGarbage = sizeOfLooseObjects > 0; if (hasGarbage && (hasEnoughGarbage || shouldCollectGarbage)) { - long looseKB = stats.sizeOfLooseObjects/1024L; + long looseKB = sizeOfLooseObjects/1024L; logger.info(MessageFormat.format("Collecting {1} KB of loose objects from {0}", repositoryName, looseKB)); // do the deed - gc.gc(); + gc.call(); garbageCollected = true; } @@ -217,7 +219,7 @@ running.set(false); } - private boolean isRepositoryIdle(FileRepository repository) { + private boolean isRepositoryIdle(Repository repository) { try { // Read the use count. // An idle use count is 2: -- Gitblit v1.9.1