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