diff options
author | James Moger <james.moger@gitblit.com> | 2012-10-31 16:32:41 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-10-31 16:32:41 -0400 |
commit | dad8b4b5dc2ad22556968b878c466a59ba80933a (patch) | |
tree | 806bb0d1487bf727cd4b312122815020ef04e81b | |
parent | d7be8cc077a85658809cf6d8cef98a6910f0f858 (diff) | |
download | gitblit-dad8b4b5dc2ad22556968b878c466a59ba80933a.tar.gz gitblit-dad8b4b5dc2ad22556968b878c466a59ba80933a.zip |
Don't even bother running Lucene indexer if we are GCing anything
-rw-r--r-- | src/com/gitblit/GCExecutor.java | 10 | ||||
-rw-r--r-- | src/com/gitblit/GitBlit.java | 8 | ||||
-rw-r--r-- | src/com/gitblit/LuceneExecutor.java | 5 |
3 files changed, 23 insertions, 0 deletions
diff --git a/src/com/gitblit/GCExecutor.java b/src/com/gitblit/GCExecutor.java index 243cbb92..312baf5b 100644 --- a/src/com/gitblit/GCExecutor.java +++ b/src/com/gitblit/GCExecutor.java @@ -53,6 +53,8 @@ public class GCExecutor implements Runnable { 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>();
@@ -70,6 +72,10 @@ public class GCExecutor implements Runnable { return settings.getBoolean(Keys.git.enableGarbageCollection, false);
}
+ public boolean isRunning() {
+ return running.get();
+ }
+
public boolean lock(String repositoryName) {
return setGCStatus(repositoryName, GCStatus.COLLECTING);
}
@@ -121,6 +127,8 @@ public class GCExecutor implements Runnable { if (!isReady()) {
return;
}
+
+ running.set(true);
Date now = new Date();
for (String repositoryName : GitBlit.self().getRepositoryList()) {
@@ -205,6 +213,8 @@ public class GCExecutor implements Runnable { logger.debug(MessageFormat.format("GCExecutor released GC lock for {0}", repositoryName));
}
}
+
+ running.set(false);
}
private boolean isRepositoryIdle(FileRepository repository) {
diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index e9b5e737..8355c034 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -2907,6 +2907,14 @@ public class GitBlit implements ServletContextListener { }
/**
+ *
+ * @return true if we are running the gc executor
+ */
+ public boolean isCollectingGarbage() {
+ return gcExecutor.isRunning();
+ }
+
+ /**
* Returns true if Gitblit is actively collecting garbage in this repository.
*
* @param repositoryName
diff --git a/src/com/gitblit/LuceneExecutor.java b/src/com/gitblit/LuceneExecutor.java index dffd4788..0e4baae9 100644 --- a/src/com/gitblit/LuceneExecutor.java +++ b/src/com/gitblit/LuceneExecutor.java @@ -167,6 +167,11 @@ public class LuceneExecutor implements Runnable { String exts = storedSettings.getString(Keys.web.luceneIgnoreExtensions, luceneIgnoreExtensions);
excludedExtensions = new TreeSet<String>(StringUtils.getStringsFromValue(exts));
+ if (GitBlit.self().isCollectingGarbage()) {
+ // busy collecting garbage, try again later
+ return;
+ }
+
for (String repositoryName: GitBlit.self().getRepositoryList()) {
RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName);
if (model.hasCommits && !ArrayUtils.isEmpty(model.indexedBranches)) {
|