From d10fbbe75258cd1c66acebd0aaa71feefdd59f4c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 07 Aug 2013 14:58:49 -0400
Subject: [PATCH] Update to Moxie 0.8.0
---
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 312baf5..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.storage.file.FileRepository;
-import org.eclipse.jgit.storage.file.GC;
-import org.eclipse.jgit.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