diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java index d69adc59cc..00a1ade40e 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java @@ -38,7 +38,6 @@ import com.google.gerrit.pgm.http.jetty.JettyEnv; import com.google.gerrit.pgm.http.jetty.JettyModule; import com.google.gerrit.pgm.http.jetty.ProjectQoSFilter; import com.google.gerrit.pgm.util.ErrorLogFile; -import com.google.gerrit.pgm.util.GarbageCollectionLogFile; import com.google.gerrit.pgm.util.LogFileCompressor; import com.google.gerrit.pgm.util.RuntimeShutdown; import com.google.gerrit.pgm.util.SiteProgram; @@ -55,7 +54,7 @@ import com.google.gerrit.server.config.MasterNodeStartup; import com.google.gerrit.server.config.RestCacheAdminModule; import com.google.gerrit.server.contact.ContactStoreModule; import com.google.gerrit.server.contact.HttpContactStoreConnection; -import com.google.gerrit.server.git.GarbageCollectionRunner; +import com.google.gerrit.server.git.GarbageCollectionModule; import com.google.gerrit.server.git.ReceiveCommitsExecutorModule; import com.google.gerrit.server.git.WorkQueue; import com.google.gerrit.server.index.DummyIndexModule; @@ -197,7 +196,6 @@ public class Daemon extends SiteProgram { throw die("No services enabled, nothing to do"); } - manager.add(GarbageCollectionLogFile.start(getSitePath())); if (!consoleLog) { manager.add(ErrorLogFile.start(getSitePath())); } @@ -371,7 +369,7 @@ public class Daemon extends SiteProgram { } } }); - modules.add(GarbageCollectionRunner.module()); + modules.add(new GarbageCollectionModule()); return cfgInjector.createChildInjector(modules); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java index cbff3f0e4d..06d73a8fc0 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/GerritGlobalModule.java @@ -72,7 +72,6 @@ import com.google.gerrit.server.change.MergeabilityCacheImpl; import com.google.gerrit.server.events.EventFactory; import com.google.gerrit.server.extensions.events.GitReferenceUpdated; import com.google.gerrit.server.git.ChangeMergeQueue; -import com.google.gerrit.server.git.GarbageCollection; import com.google.gerrit.server.git.GitModule; import com.google.gerrit.server.git.MergeQueue; import com.google.gerrit.server.git.MergeUtil; @@ -200,7 +199,6 @@ public class GerritGlobalModule extends FactoryModule { factory(ProjectState.Factory.class); factory(RegisterNewEmailSender.Factory.class); factory(ReplacePatchSetSender.Factory.class); - factory(GarbageCollection.Factory.class); bind(PermissionCollection.Factory.class); bind(AccountVisibility.class) .toProvider(AccountVisibilityProvider.class) diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/GarbageCollectionLogFile.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java similarity index 72% rename from gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/GarbageCollectionLogFile.java rename to gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java index 80975a6ca1..0f7599a7d7 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/GarbageCollectionLogFile.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java @@ -12,39 +12,38 @@ // See the License for the specific language governing permissions and // limitations under the License. -package com.google.gerrit.pgm.util; +package com.google.gerrit.server.git; import com.google.gerrit.common.FileUtil; import com.google.gerrit.extensions.events.LifecycleListener; import com.google.gerrit.server.config.SitePaths; -import com.google.gerrit.server.git.GarbageCollection; import com.google.gerrit.server.util.SystemLog; +import com.google.inject.Inject; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; -import java.io.IOException; import java.nio.file.Path; -public class GarbageCollectionLogFile { - public static LifecycleListener start(Path sitePath) throws IOException { - Path logdir = FileUtil.mkdirsOrDie(new SitePaths(sitePath).logs_dir, +public class GarbageCollectionLogFile implements LifecycleListener { + + @Inject + public GarbageCollectionLogFile(SitePaths sitePaths) { + Path logdir = FileUtil.mkdirsOrDie(sitePaths.logs_dir, "Cannot create log directory"); if (SystemLog.shouldConfigure()) { initLogSystem(logdir); } + } - return new LifecycleListener() { - @Override - public void start() { - } + @Override + public void start() { + } - @Override - public void stop() { - LogManager.getLogger(GarbageCollection.LOG_NAME).removeAllAppenders(); - } - }; + @Override + public void stop() { + LogManager.getLogger(GarbageCollection.LOG_NAME).removeAllAppenders(); } private static void initLogSystem(Path logdir) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionModule.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionModule.java new file mode 100644 index 0000000000..aacc738211 --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionModule.java @@ -0,0 +1,30 @@ +// Copyright (C) 2015 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.server.git; + +import com.google.gerrit.lifecycle.LifecycleModule; + +public class GarbageCollectionModule extends LifecycleModule { + + @Override + protected void configure() { + bind(GarbageCollectionLogFile.class).asEagerSingleton(); + listener().to(GarbageCollectionLogFile.class); + + bind(GarbageCollectionQueue.class); + factory(GarbageCollection.Factory.class); + listener().to(GarbageCollectionRunner.Lifecycle.class); + } +} diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionRunner.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionRunner.java index 5e3ca317d8..68d25d9a19 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionRunner.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/GarbageCollectionRunner.java @@ -18,12 +18,10 @@ import static com.google.gerrit.server.config.ScheduleConfig.MISSING_CONFIG; import com.google.common.collect.Lists; import com.google.gerrit.extensions.events.LifecycleListener; -import com.google.gerrit.lifecycle.LifecycleModule; import com.google.gerrit.server.config.GcConfig; import com.google.gerrit.server.config.ScheduleConfig; import com.google.gerrit.server.project.ProjectCache; import com.google.inject.Inject; -import com.google.inject.Module; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,16 +33,6 @@ public class GarbageCollectionRunner implements Runnable { private static final Logger gcLog = LoggerFactory .getLogger(GarbageCollection.LOG_NAME); - public static Module module() { - return new LifecycleModule() { - - @Override - protected void configure() { - listener().to(Lifecycle.class); - } - }; - } - static class Lifecycle implements LifecycleListener { private final WorkQueue queue; private final GarbageCollectionRunner gcRunner; diff --git a/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryModule.java b/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryModule.java index 7507d701b2..c89df6b789 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryModule.java +++ b/gerrit-server/src/test/java/com/google/gerrit/testutil/InMemoryModule.java @@ -40,6 +40,7 @@ import com.google.gerrit.server.config.SitePath; import com.google.gerrit.server.config.TrackingFooters; import com.google.gerrit.server.config.TrackingFootersProvider; import com.google.gerrit.server.git.EmailReviewCommentsExecutor; +import com.google.gerrit.server.git.GarbageCollection; import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.PerThreadRequestScope; import com.google.gerrit.server.git.WorkQueue; @@ -127,6 +128,7 @@ public class InMemoryModule extends FactoryModule { } }); install(cfgInjector.getInstance(GerritGlobalModule.class)); + factory(GarbageCollection.Factory.class); bindScope(RequestScoped.class, PerThreadRequestScope.REQUEST); diff --git a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java index 5da154ad14..ad242eb5c5 100644 --- a/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java +++ b/gerrit-war/src/main/java/com/google/gerrit/httpd/WebAppInitializer.java @@ -39,7 +39,7 @@ import com.google.gerrit.server.config.RestCacheAdminModule; import com.google.gerrit.server.config.SitePath; import com.google.gerrit.server.contact.ContactStoreModule; import com.google.gerrit.server.contact.HttpContactStoreConnection; -import com.google.gerrit.server.git.GarbageCollectionRunner; +import com.google.gerrit.server.git.GarbageCollectionModule; import com.google.gerrit.server.git.LocalDiskRepositoryManager; import com.google.gerrit.server.git.ReceiveCommitsExecutorModule; import com.google.gerrit.server.git.WorkQueue; @@ -320,7 +320,7 @@ public class WebAppInitializer extends GuiceServletContextListener bind(GerritOptions.class).toInstance(new GerritOptions(false, false)); } }); - modules.add(GarbageCollectionRunner.module()); + modules.add(new GarbageCollectionModule()); return cfgInjector.createChildInjector(modules); }