From 8878502b6d9ad913c706d4e4cd40cf7e4376622b Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 26 Feb 2014 21:45:20 -0500
Subject: [PATCH] Updated settings documentation (issue-352)
---
src/main/java/com/gitblit/manager/RepositoryManager.java | 67 +++++++++++++++++++++++----------
1 files changed, 47 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/gitblit/manager/RepositoryManager.java b/src/main/java/com/gitblit/manager/RepositoryManager.java
index 9d38b30..6b4fe97 100644
--- a/src/main/java/com/gitblit/manager/RepositoryManager.java
+++ b/src/main/java/com/gitblit/manager/RepositoryManager.java
@@ -63,12 +63,9 @@
import com.gitblit.Constants.FederationStrategy;
import com.gitblit.Constants.PermissionType;
import com.gitblit.Constants.RegistrantType;
-import com.gitblit.GCExecutor;
import com.gitblit.GitBlitException;
import com.gitblit.IStoredSettings;
import com.gitblit.Keys;
-import com.gitblit.LuceneExecutor;
-import com.gitblit.MirrorExecutor;
import com.gitblit.models.ForkModel;
import com.gitblit.models.Metric;
import com.gitblit.models.RefModel;
@@ -77,6 +74,9 @@
import com.gitblit.models.SearchResult;
import com.gitblit.models.TeamModel;
import com.gitblit.models.UserModel;
+import com.gitblit.service.GarbageCollectorService;
+import com.gitblit.service.LuceneService;
+import com.gitblit.service.MirrorService;
import com.gitblit.utils.ArrayUtils;
import com.gitblit.utils.ByteFormat;
import com.gitblit.utils.CommitCache;
@@ -118,11 +118,11 @@
private final File repositoriesFolder;
- private LuceneExecutor luceneExecutor;
+ private LuceneService luceneExecutor;
- private GCExecutor gcExecutor;
+ private GarbageCollectorService gcExecutor;
- private MirrorExecutor mirrorExecutor;
+ private MirrorService mirrorExecutor;
public RepositoryManager(
IRuntimeManager runtimeManager,
@@ -135,8 +135,8 @@
}
@Override
- public IManager setup() {
- logger.info("Git repositories folder = " + repositoriesFolder.getAbsolutePath());
+ public RepositoryManager start() {
+ logger.info("Repositories folder : {}", repositoriesFolder.getAbsolutePath());
// initialize utilities
String prefix = settings.getString(Keys.git.userRepositoryPrefix, "~");
@@ -147,7 +147,7 @@
// build initial repository list
if (settings.getBoolean(Keys.git.cacheRepositoryList, true)) {
- logger.info("Identifying available repositories...");
+ logger.info("Identifying repositories...");
getRepositoryList();
}
@@ -157,11 +157,13 @@
configureJGit();
configureCommitCache();
+ confirmWriteAccess();
+
return this;
}
@Override
- public IManager stop() {
+ public RepositoryManager stop() {
scheduledExecutor.shutdownNow();
luceneExecutor.close();
gcExecutor.close();
@@ -447,6 +449,7 @@
private void clearRepositoryMetadataCache(String repositoryName) {
repositorySizeCache.remove(repositoryName);
repositoryMetricsCache.remove(repositoryName);
+ CommitCache.instance().clear(repositoryName);
}
/**
@@ -457,6 +460,9 @@
public void resetRepositoryListCache() {
logger.info("Repository cache manually reset");
repositoryListCache.clear();
+ repositorySizeCache.clear();
+ repositoryMetricsCache.clear();
+ CommitCache.instance().clear();
}
/**
@@ -975,7 +981,7 @@
settings.getStrings(Keys.git.searchExclusions));
for (String repository : repositories) {
RepositoryModel model = getRepositoryModel(userProject + "/" + repository);
- if (model.originRepository.equalsIgnoreCase(origin)) {
+ if (model.originRepository != null && model.originRepository.equalsIgnoreCase(origin)) {
// user has a fork
return model.name;
}
@@ -1644,16 +1650,17 @@
}
protected void configureLuceneIndexing() {
- luceneExecutor = new LuceneExecutor(settings, this);
- scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, 2, TimeUnit.MINUTES);
- logger.info("Lucene executor is scheduled to process indexed branches every 2 minutes.");
+ luceneExecutor = new LuceneService(settings, this);
+ int period = 2;
+ scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, period, TimeUnit.MINUTES);
+ logger.info("Lucene will process indexed branches every {} minutes.", period);
}
protected void configureGarbageCollector() {
// schedule gc engine
- gcExecutor = new GCExecutor(settings, this);
+ gcExecutor = new GarbageCollectorService(settings, this);
if (gcExecutor.isReady()) {
- logger.info("GC executor is scheduled to scan repositories every 24 hours.");
+ logger.info("Garbage Collector (GC) will scan repositories every 24 hours.");
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, settings.getInteger(Keys.git.garbageCollectionHour, 0));
c.set(Calendar.MINUTE, 0);
@@ -1673,11 +1680,13 @@
}
logger.info(MessageFormat.format("Next scheculed GC scan is in {0}", when));
scheduledExecutor.scheduleAtFixedRate(gcExecutor, delay, 60 * 24, TimeUnit.MINUTES);
+ } else {
+ logger.info("Garbage Collector (GC) is disabled.");
}
}
protected void configureMirrorExecutor() {
- mirrorExecutor = new MirrorExecutor(settings, this);
+ mirrorExecutor = new MirrorService(settings, this);
if (mirrorExecutor.isReady()) {
int mins = TimeUtils.convertFrequencyToMinutes(settings.getString(Keys.git.mirrorPeriod, "30 mins"));
if (mins < 5) {
@@ -1685,8 +1694,10 @@
}
int delay = 1;
scheduledExecutor.scheduleAtFixedRate(mirrorExecutor, delay, mins, TimeUnit.MINUTES);
- logger.info("Mirror executor is scheduled to fetch updates every {} minutes.", mins);
+ logger.info("Mirror service will fetch updates every {} minutes.", mins);
logger.info("Next scheduled mirror fetch is in {} minutes", delay);
+ } else {
+ logger.info("Mirror service is disabled.");
}
}
@@ -1717,12 +1728,12 @@
protected void configureCommitCache() {
int daysToCache = settings.getInteger(Keys.web.activityCacheDays, 14);
if (daysToCache <= 0) {
- logger.info("commit cache disabled");
+ logger.info("Commit cache is disabled");
} else {
long start = System.nanoTime();
long repoCount = 0;
long commitCount = 0;
- logger.info(MessageFormat.format("preparing {0} day commit cache. please wait...", daysToCache));
+ logger.info(MessageFormat.format("Preparing {0} day commit cache. please wait...", daysToCache));
CommitCache.instance().setCacheDays(daysToCache);
Date cutoff = CommitCache.instance().getCutoffDate();
for (String repositoryName : getRepositoryList()) {
@@ -1749,4 +1760,20 @@
daysToCache, commitCount, repoCount, TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start)));
}
}
+
+ protected void confirmWriteAccess() {
+ if (runtimeManager.isServingRepositories()) {
+ try {
+ File file = File.createTempFile(".test-", ".txt", getRepositoriesFolder());
+ file.delete();
+ } catch (Exception e) {
+ logger.error("");
+ logger.error(Constants.BORDER2);
+ logger.error("Please check filesystem permissions!");
+ logger.error("FAILED TO WRITE TO REPOSITORIES FOLDER!!", e);
+ logger.error(Constants.BORDER2);
+ logger.error("");
+ }
+ }
+ }
}
--
Gitblit v1.9.1