From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 25 Feb 2013 08:40:30 -0500
Subject: [PATCH] Merge pull request #75 from thefake/master

---
 src/com/gitblit/GCExecutor.java |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/com/gitblit/GCExecutor.java b/src/com/gitblit/GCExecutor.java
index c5fe43b..312baf5 100644
--- a/src/com/gitblit/GCExecutor.java
+++ b/src/com/gitblit/GCExecutor.java
@@ -33,7 +33,6 @@
 
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.utils.FileUtils;
-import com.gitblit.utils.TimeUtils;
 
 /**
  * The GC executor handles periodic garbage collection in repositories.
@@ -54,6 +53,8 @@
 
 	private final IStoredSettings settings;
 	
+	private AtomicBoolean running = new AtomicBoolean(false);
+	
 	private AtomicBoolean forceClose = new AtomicBoolean(false);
 	
 	private final Map<String, GCStatus> gcCache = new ConcurrentHashMap<String, GCStatus>();
@@ -69,6 +70,10 @@
 	 */
 	public boolean isReady() {
 		return settings.getBoolean(Keys.git.enableGarbageCollection, false);
+	}
+	
+	public boolean isRunning() {
+		return running.get();
 	}
 	
 	public boolean lock(String repositoryName) {
@@ -122,6 +127,8 @@
 		if (!isReady()) {
 			return;
 		}
+		
+		running.set(true);		
 		Date now = new Date();
 
 		for (String repositoryName : GitBlit.self().getRepositoryList()) {
@@ -162,14 +169,13 @@
 				RepoStatistics stats = gc.getStatistics();
 				
 				// determine if this is a scheduled GC
-				int gcPeriodInDays = TimeUtils.convertFrequencyToMinutes(model.gcPeriod)/(60*24);
 				Calendar cal = Calendar.getInstance();
 				cal.setTime(model.lastGC);
 				cal.set(Calendar.HOUR_OF_DAY, 0);
 				cal.set(Calendar.MINUTE, 0);
 				cal.set(Calendar.SECOND, 0);
 				cal.set(Calendar.MILLISECOND, 0);
-				cal.add(Calendar.DATE, gcPeriodInDays);
+				cal.add(Calendar.DATE, model.gcPeriod);
 				Date gcDate = cal.getTime();
 				boolean shouldCollectGarbage = now.after(gcDate);
 
@@ -207,6 +213,8 @@
 				logger.debug(MessageFormat.format("GCExecutor released GC lock for {0}", repositoryName));
 			}
 		}
+		
+		running.set(false);
 	}
 	
 	private boolean isRepositoryIdle(FileRepository repository) {

--
Gitblit v1.9.1