Move WorkQueue out of GerritGlobalModule

This makes it easier to better manage the thread queue within the JVM,
declare it once at the "top level" makes it less likely we bound more
than one work queue into the same JVM, creating too many threads.

Change-Id: I22d6b98e925e2d712193af02aff94c260f1395e7
This commit is contained in:
Shawn O. Pearce
2011-10-07 18:09:57 -07:00
parent 7bec78aa47
commit 4ec33a2138
4 changed files with 13 additions and 3 deletions

View File

@@ -34,6 +34,7 @@ import com.google.gerrit.server.config.CanonicalWebUrlModule;
import com.google.gerrit.server.config.CanonicalWebUrlProvider;
import com.google.gerrit.server.config.GerritGlobalModule;
import com.google.gerrit.server.config.MasterNodeStartup;
import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.mail.SmtpEmailSender;
import com.google.gerrit.server.schema.SchemaVersionCheck;
import com.google.gerrit.server.ssh.NoSshModule;
@@ -189,6 +190,7 @@ public class Daemon extends SiteProgram {
final List<Module> modules = new ArrayList<Module>();
modules.add(SchemaVersionCheck.module());
modules.add(new LogFileCompressor.Module());
modules.add(new WorkQueue.Module());
modules.add(cfgInjector.getInstance(GerritGlobalModule.class));
modules.add(new SmtpEmailSender.Module());
if (httpd) {

View File

@@ -49,7 +49,6 @@ import com.google.gerrit.server.git.ReplicationQueue;
import com.google.gerrit.server.git.SecureCredentialsProvider;
import com.google.gerrit.server.git.TagCache;
import com.google.gerrit.server.git.TransferConfig;
import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.mail.FromAddressGenerator;
import com.google.gerrit.server.mail.FromAddressGeneratorProvider;
import com.google.gerrit.server.patch.PatchListCacheImpl;
@@ -162,7 +161,6 @@ public class GerritGlobalModule extends FactoryModule {
bind(PermissionCollection.Factory.class);
bind(FileTypeRegistry.class).to(MimeUtilFileTypeRegistry.class);
bind(WorkQueue.class);
bind(ToolsCatalog.class);
bind(EventFactory.class);
bind(TransferConfig.class);
@@ -188,7 +186,6 @@ public class GerritGlobalModule extends FactoryModule {
@Override
protected void configure() {
listener().to(CachePool.Lifecycle.class);
listener().to(WorkQueue.Lifecycle.class);
listener().to(VelocityLifecycle.class);
}
});

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.server.git;
import com.google.gerrit.lifecycle.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.reviewdb.Project.NameKey;
import com.google.gerrit.server.util.IdGenerator;
import com.google.inject.Inject;
@@ -61,6 +62,14 @@ public class WorkQueue {
}
}
public static class Module extends LifecycleModule {
@Override
protected void configure() {
bind(WorkQueue.class);
listener().to(Lifecycle.class);
}
}
private static final Logger log = LoggerFactory.getLogger(WorkQueue.class);
private static final UncaughtExceptionHandler LOG_UNCAUGHT_EXCEPTION =
new UncaughtExceptionHandler() {

View File

@@ -26,6 +26,7 @@ import com.google.gerrit.server.config.GerritServerConfigModule;
import com.google.gerrit.server.config.MasterNodeStartup;
import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.git.LocalDiskRepositoryManager;
import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.mail.SmtpEmailSender;
import com.google.gerrit.server.schema.DataSourceProvider;
import com.google.gerrit.server.schema.DatabaseModule;
@@ -179,6 +180,7 @@ public class WebAppInitializer extends GuiceServletContextListener {
private Injector createSysInjector() {
final List<Module> modules = new ArrayList<Module>();
modules.add(new WorkQueue.Module());
modules.add(cfgInjector.getInstance(GerritGlobalModule.class));
modules.add(new SmtpEmailSender.Module());
modules.add(new CanonicalWebUrlModule() {