James Moger
2013-11-26 67389b9e7060b7f917a8383ec04d3a0c6bd24c5c
src/main/java/com/gitblit/GitBlit.java
@@ -164,7 +164,7 @@
   private final Logger logger = LoggerFactory.getLogger(GitBlit.class);
   private final ScheduledExecutorService scheduledExecutor = Executors.newScheduledThreadPool(5);
   private final ScheduledExecutorService scheduledExecutor = Executors.newScheduledThreadPool(10);
   private final List<FederationModel> federationRegistrations = Collections
         .synchronizedList(new ArrayList<FederationModel>());
@@ -206,6 +206,8 @@
   private LuceneExecutor luceneExecutor;
   private GCExecutor gcExecutor;
   private MirrorExecutor mirrorExecutor;
   private TimeZone timezone;
@@ -2004,7 +2006,6 @@
         model.description = getConfig(config, "description", "");
         model.originRepository = getConfig(config, "originRepository", null);
         model.addOwners(ArrayUtils.fromString(getConfig(config, "owner", "")));
         model.useDocs = getConfig(config, "useDocs", false);
         model.useIncrementalPushTags = getConfig(config, "useIncrementalPushTags", false);
         model.incrementalPushTagPrefix = getConfig(config, "incrementalPushTagPrefix", null);
         model.allowForks = getConfig(config, "allowForks", true);
@@ -2035,6 +2036,7 @@
         model.origin = config.getString("remote", "origin", "url");
         if (model.origin != null) {
            model.origin = model.origin.replace('\\', '/');
            model.isMirror = config.getBoolean("remote", "origin", "mirror", false);
         }
         model.preReceiveScripts = new ArrayList<String>(Arrays.asList(config.getStringList(
               Constants.CONFIG_GITBLIT, null, "preReceiveScript")));
@@ -2563,7 +2565,6 @@
      config.setString(Constants.CONFIG_GITBLIT, null, "description", repository.description);
      config.setString(Constants.CONFIG_GITBLIT, null, "originRepository", repository.originRepository);
      config.setString(Constants.CONFIG_GITBLIT, null, "owner", ArrayUtils.toString(repository.owners));
      config.setBoolean(Constants.CONFIG_GITBLIT, null, "useDocs", repository.useDocs);
      config.setBoolean(Constants.CONFIG_GITBLIT, null, "useIncrementalPushTags", repository.useIncrementalPushTags);
      if (StringUtils.isEmpty(repository.incrementalPushTagPrefix) ||
            repository.incrementalPushTagPrefix.equals(settings.getString(Keys.git.defaultIncrementalPushTagPrefix, "r"))) {
@@ -3505,6 +3506,7 @@
      mailExecutor = new MailExecutor(settings);
      luceneExecutor = new LuceneExecutor(settings, repositoriesFolder);
      gcExecutor = new GCExecutor(settings);
      mirrorExecutor = new MirrorExecutor(settings);
      // initialize utilities
      String prefix = settings.getString(Keys.git.userRepositoryPrefix, "~");
@@ -3544,6 +3546,7 @@
      configureMailExecutor();
      configureLuceneIndexing();
      configureGarbageCollector();
      configureMirrorExecutor();
      if (startFederation) {
         configureFederation();
      }
@@ -3592,6 +3595,19 @@
         }
         logger.info(MessageFormat.format("Next scheculed GC scan is in {0}", when));
         scheduledExecutor.scheduleAtFixedRate(gcExecutor, delay, 60*24, TimeUnit.MINUTES);
      }
   }
   protected void configureMirrorExecutor() {
      if (mirrorExecutor.isReady()) {
         int mins = TimeUtils.convertFrequencyToMinutes(settings.getString(Keys.git.mirrorPeriod, "30 mins"));
         if (mins < 5) {
            mins = 5;
         }
         int delay = 1;
         scheduledExecutor.scheduleAtFixedRate(mirrorExecutor, delay, mins,  TimeUnit.MINUTES);
         logger.info("Mirror executor is scheduled to fetch updates every {} minutes.", mins);
         logger.info("Next scheduled mirror fetch is in {} minutes", delay);
      }
   }
@@ -3864,6 +3880,7 @@
      scheduledExecutor.shutdownNow();
      luceneExecutor.close();
      gcExecutor.close();
      mirrorExecutor.close();
      if (fanoutService != null) {
         fanoutService.stop();
      }