Skip to content

Commit

Permalink
Merged #161 "Allow Lucene indexing period to be configurable"
Browse files Browse the repository at this point in the history
  • Loading branch information
gitblit committed Sep 8, 2014
2 parents aa5829a + 936af6a commit 0d7fbbf
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 24 deletions.
6 changes: 6 additions & 0 deletions src/main/distrib/data/gitblit.properties
Expand Up @@ -1006,6 +1006,12 @@ web.compressedDownloads = zip gz
# 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
Expand Down
12 changes: 5 additions & 7 deletions src/main/java/com/gitblit/manager/RepositoryManager.java
Expand Up @@ -1825,9 +1825,10 @@ public List<SearchResult> search(String query, int page, int pageSize, List<Stri

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() {
Expand Down Expand Up @@ -1862,10 +1863,7 @@ protected void configureGarbageCollector() {
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);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/gitblit/manager/ServicesManager.java
Expand Up @@ -312,7 +312,7 @@ public FederationPuller(List<FederationModel> registrations) {
@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(
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/gitblit/servlet/FederationServlet.java
Expand Up @@ -164,7 +164,7 @@ protected void processRequest(javax.servlet.http.HttpServletRequest request,

// 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
Expand Down
23 changes: 12 additions & 11 deletions src/main/java/com/gitblit/utils/TimeUtils.java
Expand Up @@ -322,12 +322,13 @@ private String translate(int val, String key, String defaultPattern) {
* 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();
Expand All @@ -337,16 +338,16 @@ public static int convertFrequencyToMinutes(String frequency) {
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;
}
Expand Down
8 changes: 4 additions & 4 deletions src/test/java/com/gitblit/tests/TimeUtilsTest.java
Expand Up @@ -100,9 +100,9 @@ public void testTimeAgo() throws Exception {

@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));
}
}

0 comments on commit 0d7fbbf

Please sign in to comment.