From 14181da41a98817aef2b528f92d58613e61e495f Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 08 Sep 2014 13:41:28 -0400
Subject: [PATCH] Merge branch 'ticket/161' into develop

---
 src/test/java/com/gitblit/tests/TimeUtilsTest.java       |    8 ++++----
 src/main/java/com/gitblit/manager/ServicesManager.java   |    2 +-
 src/main/distrib/data/gitblit.properties                 |    6 ++++++
 src/main/java/com/gitblit/utils/TimeUtils.java           |   23 ++++++++++++-----------
 src/main/java/com/gitblit/manager/RepositoryManager.java |   12 +++++-------
 src/main/java/com/gitblit/servlet/FederationServlet.java |    2 +-
 6 files changed, 29 insertions(+), 24 deletions(-)

diff --git a/src/main/distrib/data/gitblit.properties b/src/main/distrib/data/gitblit.properties
index f8d6c6d..b975fc1 100644
--- a/src/main/distrib/data/gitblit.properties
+++ b/src/main/distrib/data/gitblit.properties
@@ -1006,6 +1006,12 @@
 # SINCE 0.9.0
 web.allowLuceneIndexing = true
 
+# Control the frequency of Lucene repository indexing.
+# The default setting is to check for updated refs every 2 mins.
+#
+# SINCE 1.6.1
+web.luceneFrequency = 2 mins
+
 # Allows an authenticated user to create forks of a repository
 #
 # set this to false if you want to disable all fork controls on the web site
diff --git a/src/main/java/com/gitblit/manager/RepositoryManager.java b/src/main/java/com/gitblit/manager/RepositoryManager.java
index 6a22db5..d9939bd 100644
--- a/src/main/java/com/gitblit/manager/RepositoryManager.java
+++ b/src/main/java/com/gitblit/manager/RepositoryManager.java
@@ -1829,9 +1829,10 @@
 
 	protected void configureLuceneIndexing() {
 		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);
+		String frequency = settings.getString(Keys.web.luceneFrequency, "2 mins");
+		int mins = TimeUtils.convertFrequencyToMinutes(frequency, 2);
+		scheduledExecutor.scheduleAtFixedRate(luceneExecutor, 1, mins,  TimeUnit.MINUTES);
+		logger.info("Lucene will process indexed branches every {} minutes.", mins);
 	}
 
 	protected void configureGarbageCollector() {
@@ -1866,10 +1867,7 @@
 	protected void configureMirrorExecutor() {
 		mirrorExecutor = new MirrorService(settings, this);
 		if (mirrorExecutor.isReady()) {
-			int mins = TimeUtils.convertFrequencyToMinutes(settings.getString(Keys.git.mirrorPeriod, "30 mins"));
-			if (mins < 5) {
-				mins = 5;
-			}
+			int mins = TimeUtils.convertFrequencyToMinutes(settings.getString(Keys.git.mirrorPeriod, "30 mins"), 5);
 			int delay = 1;
 			scheduledExecutor.scheduleAtFixedRate(mirrorExecutor, delay, mins,  TimeUnit.MINUTES);
 			logger.info("Mirror service will fetch updates every {} minutes.", mins);
diff --git a/src/main/java/com/gitblit/manager/ServicesManager.java b/src/main/java/com/gitblit/manager/ServicesManager.java
index 2550f66..7185854 100644
--- a/src/main/java/com/gitblit/manager/ServicesManager.java
+++ b/src/main/java/com/gitblit/manager/ServicesManager.java
@@ -510,7 +510,7 @@
 		@Override
 		public void reschedule(FederationModel registration) {
 			// schedule the next pull
-			int mins = TimeUtils.convertFrequencyToMinutes(registration.frequency);
+			int mins = TimeUtils.convertFrequencyToMinutes(registration.frequency, 5);
 			registration.nextPull = new Date(System.currentTimeMillis() + (mins * 60 * 1000L));
 			scheduledExecutor.schedule(new FederationPuller(registration), mins, TimeUnit.MINUTES);
 			logger.info(MessageFormat.format(
diff --git a/src/main/java/com/gitblit/servlet/FederationServlet.java b/src/main/java/com/gitblit/servlet/FederationServlet.java
index 89ff231..78709c9 100644
--- a/src/main/java/com/gitblit/servlet/FederationServlet.java
+++ b/src/main/java/com/gitblit/servlet/FederationServlet.java
@@ -170,7 +170,7 @@
 
 			// setup the last and netx pull dates
 			results.lastPull = new Date();
-			int mins = TimeUtils.convertFrequencyToMinutes(results.frequency);
+			int mins = TimeUtils.convertFrequencyToMinutes(results.frequency, 5);
 			results.nextPull = new Date(System.currentTimeMillis() + (mins * 60 * 1000L));
 
 			// acknowledge the receipt of status
diff --git a/src/main/java/com/gitblit/utils/TimeUtils.java b/src/main/java/com/gitblit/utils/TimeUtils.java
index 4b113be..c0e98e5 100644
--- a/src/main/java/com/gitblit/utils/TimeUtils.java
+++ b/src/main/java/com/gitblit/utils/TimeUtils.java
@@ -322,12 +322,13 @@
 	 * Convert a frequency string into minutes.
 	 *
 	 * @param frequency
+	 * @param minimumMins
 	 * @return minutes
 	 */
-	public static int convertFrequencyToMinutes(String frequency) {
+	public static int convertFrequencyToMinutes(String frequency, int minimumMins) {
 		// parse the frequency
 		frequency = frequency.toLowerCase();
-		int mins = 60;
+		int mins = minimumMins;
 		if (!StringUtils.isEmpty(frequency)) {
 			try {
 				String str = frequency.trim();
@@ -337,16 +338,16 @@
 				mins = (int) Float.parseFloat(str);
 			} catch (NumberFormatException e) {
 			}
-			if (mins < 5) {
-				mins = 5;
+			if (mins < minimumMins) {
+				mins = minimumMins;
 			}
-		}
-		if (frequency.indexOf("day") > -1) {
-			// convert to minutes
-			mins *= 1440;
-		} else if (frequency.indexOf("hour") > -1) {
-			// convert to minutes
-			mins *= 60;
+			if (frequency.indexOf("day") > -1) {
+				// convert to minutes
+				mins *= 1440;
+			} else if (frequency.indexOf("hour") > -1) {
+				// convert to minutes
+				mins *= 60;
+			}
 		}
 		return mins;
 	}
diff --git a/src/test/java/com/gitblit/tests/TimeUtilsTest.java b/src/test/java/com/gitblit/tests/TimeUtilsTest.java
index fb38ffd..ef506ef 100644
--- a/src/test/java/com/gitblit/tests/TimeUtilsTest.java
+++ b/src/test/java/com/gitblit/tests/TimeUtilsTest.java
@@ -100,9 +100,9 @@
 
 	@Test
 	public void testFrequency() {
-		assertEquals(5, TimeUtils.convertFrequencyToMinutes("2 mins"));
-		assertEquals(10, TimeUtils.convertFrequencyToMinutes("10 mins"));
-		assertEquals(600, TimeUtils.convertFrequencyToMinutes("10 hours"));
-		assertEquals(14400, TimeUtils.convertFrequencyToMinutes(" 10 days "));
+		assertEquals(5, TimeUtils.convertFrequencyToMinutes("2 mins", 5));
+		assertEquals(10, TimeUtils.convertFrequencyToMinutes("10 mins", 5));
+		assertEquals(600, TimeUtils.convertFrequencyToMinutes("10 hours", 5));
+		assertEquals(14400, TimeUtils.convertFrequencyToMinutes(" 10 days ", 5));
 	}
 }

--
Gitblit v1.9.1