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