RebuildNoteDb: Inject members instead of using getInstance

Change-Id: I9dccdd8220f8ee8ffff583e8c1aca5f7e378b539
This commit is contained in:
Dave Borowitz
2016-03-11 00:06:07 -05:00
parent 0189c4e784
commit d24a1908e0

View File

@@ -37,6 +37,7 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.config.AllUsersName; import com.google.gerrit.server.config.AllUsersName;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.MultiProgressMonitor; import com.google.gerrit.server.git.MultiProgressMonitor;
import com.google.gerrit.server.git.MultiProgressMonitor.Task; import com.google.gerrit.server.git.MultiProgressMonitor.Task;
@@ -51,11 +52,11 @@ import com.google.gerrit.server.schema.DisabledChangesReviewDbWrapper;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory; import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.TypeLiteral;
import org.eclipse.jgit.lib.BatchRefUpdate; import org.eclipse.jgit.lib.BatchRefUpdate;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.NullProgressMonitor;
import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Ref;
@@ -85,6 +86,28 @@ public class RebuildNotedb extends SiteProgram {
private Injector dbInjector; private Injector dbInjector;
private Injector sysInjector; private Injector sysInjector;
@Inject
private AllUsersName allUsersName;
@Inject
private ChangeRebuilder rebuilder;
@Inject
@GerritServerConfig
private Config cfg;
@Inject
private GitRepositoryManager repoManager;
@Inject
private NotesMigration notesMigration;
@Inject
private SchemaFactory<ReviewDb> schemaFactory;
@Inject
private WorkQueue workQueue;
@Override @Override
public int run() throws Exception { public int run() throws Exception {
mustHaveValidSite(); mustHaveValidSite();
@@ -96,8 +119,7 @@ public class RebuildNotedb extends SiteProgram {
dbManager.start(); dbManager.start();
sysInjector = createSysInjector(); sysInjector = createSysInjector();
NotesMigration notesMigration = sysInjector.getInstance( sysInjector.injectMembers(this);
NotesMigration.class);
if (!notesMigration.enabled()) { if (!notesMigration.enabled()) {
die("Notedb is not enabled."); die("Notedb is not enabled.");
} }
@@ -107,16 +129,11 @@ public class RebuildNotedb extends SiteProgram {
ListeningExecutorService executor = newExecutor(); ListeningExecutorService executor = newExecutor();
System.out.println("Rebuilding the notedb"); System.out.println("Rebuilding the notedb");
ChangeRebuilder rebuilder = sysInjector.getInstance(ChangeRebuilder.class);
Multimap<Project.NameKey, Change.Id> changesByProject = Multimap<Project.NameKey, Change.Id> changesByProject =
getChangesByProject(); getChangesByProject();
AtomicBoolean ok = new AtomicBoolean(true); AtomicBoolean ok = new AtomicBoolean(true);
Stopwatch sw = Stopwatch.createStarted(); Stopwatch sw = Stopwatch.createStarted();
GitRepositoryManager repoManager =
sysInjector.getInstance(GitRepositoryManager.class);
Project.NameKey allUsersName =
sysInjector.getInstance(AllUsersName.class);
try (Repository allUsersRepo = try (Repository allUsersRepo =
repoManager.openMetadataRepository(allUsersName)) { repoManager.openMetadataRepository(allUsersName)) {
deleteRefs(RefNames.REFS_DRAFT_COMMENTS, allUsersRepo); deleteRefs(RefNames.REFS_DRAFT_COMMENTS, allUsersRepo);
@@ -206,8 +223,7 @@ public class RebuildNotedb extends SiteProgram {
private ListeningExecutorService newExecutor() { private ListeningExecutorService newExecutor() {
if (threads > 0) { if (threads > 0) {
return MoreExecutors.listeningDecorator( return MoreExecutors.listeningDecorator(
dbInjector.getInstance(WorkQueue.class) workQueue.createQueue(threads, "RebuildChange"));
.createQueue(threads, "RebuildChange"));
} else { } else {
return MoreExecutors.newDirectExecutorService(); return MoreExecutors.newDirectExecutorService();
} }
@@ -217,8 +233,6 @@ public class RebuildNotedb extends SiteProgram {
throws OrmException { throws OrmException {
// Memorize all changes so we can close the db connection and allow // Memorize all changes so we can close the db connection and allow
// rebuilder threads to use the full connection pool. // rebuilder threads to use the full connection pool.
SchemaFactory<ReviewDb> schemaFactory = sysInjector.getInstance(Key.get(
new TypeLiteral<SchemaFactory<ReviewDb>>() {}));
Multimap<Project.NameKey, Change.Id> changesByProject = Multimap<Project.NameKey, Change.Id> changesByProject =
ArrayListMultimap.create(); ArrayListMultimap.create();
try (ReviewDb db = schemaFactory.open()) { try (ReviewDb db = schemaFactory.open()) {