Add class to encapsulate config parameters of groups to NoteDb migration
Have a single place to read the config parameters of the groups to NoteDb migration. This makes it easier to add futher config parameters (e.g. to disable group tables in ReviewDb). Change-Id: I7805a04b7d619048e849c3401e9b452fa3cf1089 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
		| @@ -28,6 +28,7 @@ import com.google.gerrit.server.config.TrackingFooters; | ||||
| import com.google.gerrit.server.config.TrackingFootersProvider; | ||||
| import com.google.gerrit.server.git.GitRepositoryManager; | ||||
| import com.google.gerrit.server.notedb.ChangeBundleReader; | ||||
| import com.google.gerrit.server.notedb.GroupsMigration; | ||||
| import com.google.gerrit.server.notedb.GwtormChangeBundleReader; | ||||
| import com.google.gerrit.server.notedb.NotesMigration; | ||||
| import com.google.gerrit.server.schema.DataSourceType; | ||||
| @@ -78,6 +79,7 @@ class InMemoryTestingDatabaseModule extends LifecycleModule { | ||||
|     bind(DataSourceType.class).to(InMemoryH2Type.class); | ||||
|  | ||||
|     install(new NotesMigration.Module()); | ||||
|     install(new GroupsMigration.Module()); | ||||
|     TypeLiteral<SchemaFactory<ReviewDb>> schemaFactory = | ||||
|         new TypeLiteral<SchemaFactory<ReviewDb>>() {}; | ||||
|     bind(schemaFactory).to(NotesMigrationSchemaFactory.class); | ||||
|   | ||||
| @@ -71,6 +71,7 @@ import com.google.gerrit.server.mail.SignedTokenEmailTokenVerifier; | ||||
| import com.google.gerrit.server.mail.receive.MailReceiver; | ||||
| import com.google.gerrit.server.mail.send.SmtpEmailSender; | ||||
| import com.google.gerrit.server.mime.MimeUtil2Module; | ||||
| import com.google.gerrit.server.notedb.GroupsMigration; | ||||
| import com.google.gerrit.server.notedb.NotesMigration; | ||||
| import com.google.gerrit.server.patch.DiffExecutorModule; | ||||
| import com.google.gerrit.server.plugins.PluginGuiceEnvironment; | ||||
| @@ -307,6 +308,7 @@ public class WebAppInitializer extends GuiceServletContextListener implements Fi | ||||
|     } | ||||
|     modules.add(new DatabaseModule()); | ||||
|     modules.add(new NotesMigration.Module()); | ||||
|     modules.add(new GroupsMigration.Module()); | ||||
|     modules.add(new DropWizardMetricMaker.ApiModule()); | ||||
|     return Guice.createInjector(PRODUCTION, modules); | ||||
|   } | ||||
|   | ||||
| @@ -15,10 +15,6 @@ | ||||
| package com.google.gerrit.pgm.init; | ||||
|  | ||||
| import static com.google.common.base.Preconditions.checkArgument; | ||||
| import static com.google.gerrit.server.notedb.NoteDbTable.GROUPS; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.READ; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.SECTION_NOTE_DB; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.WRITE; | ||||
|  | ||||
| import com.google.common.collect.ImmutableList; | ||||
| import com.google.common.collect.ImmutableSet; | ||||
| @@ -46,6 +42,7 @@ import com.google.gerrit.server.group.db.GroupConfig; | ||||
| import com.google.gerrit.server.group.db.GroupNameNotes; | ||||
| import com.google.gerrit.server.group.db.Groups; | ||||
| import com.google.gerrit.server.group.db.InternalGroupUpdate; | ||||
| import com.google.gerrit.server.notedb.GroupsMigration; | ||||
| import com.google.gwtorm.server.OrmDuplicateKeyException; | ||||
| import com.google.gwtorm.server.OrmException; | ||||
| import com.google.inject.Inject; | ||||
| @@ -76,20 +73,14 @@ public class GroupsOnInit { | ||||
|   private final InitFlags flags; | ||||
|   private final SitePaths site; | ||||
|   private final String allUsers; | ||||
|   private final boolean readFromNoteDb; | ||||
|   private final boolean writeGroupsToNoteDb; | ||||
|   private final GroupsMigration groupsMigration; | ||||
|  | ||||
|   @Inject | ||||
|   public GroupsOnInit(InitFlags flags, SitePaths site, AllUsersNameOnInitProvider allUsers) { | ||||
|     this.flags = flags; | ||||
|     this.site = site; | ||||
|     this.allUsers = allUsers.get(); | ||||
|     readFromNoteDb = flags.cfg.getBoolean(SECTION_NOTE_DB, GROUPS.key(), READ, false); | ||||
|     // TODO(aliceks): Remove this flag when all other necessary TODOs for writing groups to NoteDb | ||||
|     // have been addressed. | ||||
|     // Don't flip this flag in a production setting! We only added it to spread the implementation | ||||
|     // of groups in NoteDb among several changes which are gradually merged. | ||||
|     writeGroupsToNoteDb = flags.cfg.getBoolean(SECTION_NOTE_DB, GROUPS.key(), WRITE, false); | ||||
|     this.groupsMigration = new GroupsMigration(flags.cfg); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
| @@ -105,7 +96,7 @@ public class GroupsOnInit { | ||||
|    */ | ||||
|   public InternalGroup getExistingGroup(ReviewDb db, GroupReference groupReference) | ||||
|       throws OrmException, NoSuchGroupException, IOException, ConfigInvalidException { | ||||
|     if (readFromNoteDb) { | ||||
|     if (groupsMigration.readFromNoteDb()) { | ||||
|       return getExistingGroupFromNoteDb(groupReference); | ||||
|     } | ||||
|  | ||||
| @@ -155,7 +146,7 @@ public class GroupsOnInit { | ||||
|    */ | ||||
|   public Stream<GroupReference> getAllGroupReferences(ReviewDb db) | ||||
|       throws OrmException, IOException, ConfigInvalidException { | ||||
|     if (readFromNoteDb) { | ||||
|     if (groupsMigration.readFromNoteDb()) { | ||||
|       File allUsersRepoPath = getPathToAllUsersRepository(); | ||||
|       if (allUsersRepoPath != null) { | ||||
|         try (Repository allUsersRepo = new FileRepository(allUsersRepoPath)) { | ||||
| @@ -185,7 +176,7 @@ public class GroupsOnInit { | ||||
|   public void addGroupMember(ReviewDb db, AccountGroup.UUID groupUuid, Account account) | ||||
|       throws OrmException, NoSuchGroupException, IOException, ConfigInvalidException { | ||||
|     addGroupMemberInReviewDb(db, groupUuid, account.getId()); | ||||
|     if (!writeGroupsToNoteDb) { | ||||
|     if (!groupsMigration.writeToNoteDb()) { | ||||
|       return; | ||||
|     } | ||||
|     addGroupMemberInNoteDb(groupUuid, account); | ||||
|   | ||||
| @@ -28,6 +28,7 @@ import com.google.gerrit.server.config.GerritServerConfig; | ||||
| import com.google.gerrit.server.config.GerritServerConfigModule; | ||||
| import com.google.gerrit.server.config.SitePath; | ||||
| import com.google.gerrit.server.git.GitRepositoryManagerModule; | ||||
| import com.google.gerrit.server.notedb.GroupsMigration; | ||||
| import com.google.gerrit.server.notedb.NotesMigration; | ||||
| import com.google.gerrit.server.schema.DataSourceModule; | ||||
| import com.google.gerrit.server.schema.DataSourceProvider; | ||||
| @@ -183,6 +184,7 @@ public abstract class SiteProgram extends AbstractProgram { | ||||
|     modules.add(new SchemaModule()); | ||||
|     modules.add(cfgInjector.getInstance(GitRepositoryManagerModule.class)); | ||||
|     modules.add(new NotesMigration.Module()); | ||||
|     modules.add(new GroupsMigration.Module()); | ||||
|  | ||||
|     try { | ||||
|       return Guice.createInjector(PRODUCTION, modules); | ||||
|   | ||||
| @@ -15,9 +15,6 @@ | ||||
| package com.google.gerrit.server.group.db; | ||||
|  | ||||
| import static com.google.common.collect.ImmutableSet.toImmutableSet; | ||||
| import static com.google.gerrit.server.notedb.NoteDbTable.GROUPS; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.READ; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.SECTION_NOTE_DB; | ||||
|  | ||||
| import com.google.common.collect.ImmutableList; | ||||
| import com.google.common.collect.ImmutableSet; | ||||
| @@ -33,9 +30,9 @@ import com.google.gerrit.reviewdb.client.AccountGroupMember; | ||||
| import com.google.gerrit.reviewdb.client.AccountGroupMemberAudit; | ||||
| 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.group.InternalGroup; | ||||
| import com.google.gerrit.server.notedb.GroupsMigration; | ||||
| import com.google.gwtorm.server.OrmDuplicateKeyException; | ||||
| import com.google.gwtorm.server.OrmException; | ||||
| import com.google.gwtorm.server.ResultSet; | ||||
| @@ -46,7 +43,6 @@ import java.util.List; | ||||
| import java.util.Optional; | ||||
| import java.util.stream.Stream; | ||||
| import org.eclipse.jgit.errors.ConfigInvalidException; | ||||
| import org.eclipse.jgit.lib.Config; | ||||
| import org.eclipse.jgit.lib.Repository; | ||||
|  | ||||
| /** | ||||
| @@ -64,16 +60,16 @@ import org.eclipse.jgit.lib.Repository; | ||||
|  */ | ||||
| @Singleton | ||||
| public class Groups { | ||||
|   private final boolean readFromNoteDb; | ||||
|   private final GroupsMigration groupsMigration; | ||||
|   private final GitRepositoryManager repoManager; | ||||
|   private final AllUsersName allUsersName; | ||||
|  | ||||
|   @Inject | ||||
|   public Groups( | ||||
|       @GerritServerConfig Config config, | ||||
|       GroupsMigration groupsMigration, | ||||
|       GitRepositoryManager repoManager, | ||||
|       AllUsersName allUsersName) { | ||||
|     readFromNoteDb = config.getBoolean(SECTION_NOTE_DB, GROUPS.key(), READ, false); | ||||
|     this.groupsMigration = groupsMigration; | ||||
|     this.repoManager = repoManager; | ||||
|     this.allUsersName = allUsersName; | ||||
|   } | ||||
| @@ -108,7 +104,7 @@ public class Groups { | ||||
|    */ | ||||
|   public Optional<InternalGroup> getGroup(ReviewDb db, AccountGroup.UUID groupUuid) | ||||
|       throws OrmException, IOException, ConfigInvalidException { | ||||
|     if (readFromNoteDb) { | ||||
|     if (groupsMigration.readFromNoteDb()) { | ||||
|       try (Repository allUsersRepo = repoManager.openRepository(allUsersName)) { | ||||
|         return getGroupFromNoteDb(allUsersRepo, groupUuid); | ||||
|       } | ||||
| @@ -185,7 +181,7 @@ public class Groups { | ||||
|    */ | ||||
|   public Stream<GroupReference> getAllGroupReferences(ReviewDb db) | ||||
|       throws OrmException, IOException, ConfigInvalidException { | ||||
|     if (readFromNoteDb) { | ||||
|     if (groupsMigration.readFromNoteDb()) { | ||||
|       try (Repository allUsersRepo = repoManager.openRepository(allUsersName)) { | ||||
|         return GroupNameNotes.loadAllGroupReferences(allUsersRepo).stream(); | ||||
|       } | ||||
| @@ -281,7 +277,7 @@ public class Groups { | ||||
|    */ | ||||
|   public Stream<AccountGroup.UUID> getExternalGroups(ReviewDb db) | ||||
|       throws OrmException, IOException, ConfigInvalidException { | ||||
|     if (readFromNoteDb) { | ||||
|     if (groupsMigration.readFromNoteDb()) { | ||||
|       try (Repository allUsersRepo = repoManager.openRepository(allUsersName)) { | ||||
|         return getExternalGroupsFromNoteDb(allUsersRepo); | ||||
|       } | ||||
| @@ -318,7 +314,7 @@ public class Groups { | ||||
|    */ | ||||
|   public List<AccountGroupMemberAudit> getMembersAudit(ReviewDb db, AccountGroup.UUID groupUuid) | ||||
|       throws OrmException { | ||||
|     if (readFromNoteDb) { | ||||
|     if (groupsMigration.readFromNoteDb()) { | ||||
|       // TODO(dborowitz): Implement. | ||||
|       throw new OrmException("Audit logs not yet implemented in NoteDb"); | ||||
|     } | ||||
| @@ -339,7 +335,7 @@ public class Groups { | ||||
|    */ | ||||
|   public List<AccountGroupByIdAud> getSubgroupsAudit(ReviewDb db, AccountGroup.UUID groupUuid) | ||||
|       throws OrmException { | ||||
|     if (readFromNoteDb) { | ||||
|     if (groupsMigration.readFromNoteDb()) { | ||||
|       // TODO(dborowitz): Implement. | ||||
|       throw new OrmException("Audit logs not yet implemented in NoteDb"); | ||||
|     } | ||||
|   | ||||
| @@ -16,9 +16,6 @@ package com.google.gerrit.server.group.db; | ||||
|  | ||||
| import static com.google.common.collect.ImmutableSet.toImmutableSet; | ||||
| import static com.google.gerrit.server.group.db.Groups.getExistingGroupFromReviewDb; | ||||
| import static com.google.gerrit.server.notedb.NoteDbTable.GROUPS; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.SECTION_NOTE_DB; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.WRITE; | ||||
|  | ||||
| import com.google.auto.value.AutoValue; | ||||
| import com.google.common.annotations.VisibleForTesting; | ||||
| @@ -51,6 +48,7 @@ import com.google.gerrit.server.git.GitRepositoryManager; | ||||
| import com.google.gerrit.server.git.MetaDataUpdate; | ||||
| import com.google.gerrit.server.git.RenameGroupOp; | ||||
| import com.google.gerrit.server.group.InternalGroup; | ||||
| import com.google.gerrit.server.notedb.GroupsMigration; | ||||
| import com.google.gerrit.server.update.RefUpdateUtil; | ||||
| import com.google.gwtorm.server.OrmDuplicateKeyException; | ||||
| import com.google.gwtorm.server.OrmException; | ||||
| @@ -107,8 +105,8 @@ public class GroupsUpdate { | ||||
|   @Nullable private final IdentifiedUser currentUser; | ||||
|   private final PersonIdent authorIdent; | ||||
|   private final MetaDataUpdateFactory metaDataUpdateFactory; | ||||
|   private final GroupsMigration groupsMigration; | ||||
|   private final GitReferenceUpdated gitRefUpdated; | ||||
|   private final boolean writeGroupsToNoteDb; | ||||
|   private final boolean reviewDbUpdatesAreBlocked; | ||||
|  | ||||
|   @Inject | ||||
| @@ -124,6 +122,7 @@ public class GroupsUpdate { | ||||
|       @GerritServerId String serverId, | ||||
|       @GerritPersonIdent PersonIdent serverIdent, | ||||
|       MetaDataUpdate.InternalFactory metaDataUpdateInternalFactory, | ||||
|       GroupsMigration groupsMigration, | ||||
|       @GerritServerConfig Config config, | ||||
|       GitReferenceUpdated gitRefUpdated, | ||||
|       @Assisted @Nullable IdentifiedUser currentUser) { | ||||
| @@ -136,18 +135,13 @@ public class GroupsUpdate { | ||||
|     this.anonymousCowardName = anonymousCowardName; | ||||
|     this.renameGroupOpFactory = renameGroupOpFactory; | ||||
|     this.serverId = serverId; | ||||
|     this.groupsMigration = groupsMigration; | ||||
|     this.gitRefUpdated = gitRefUpdated; | ||||
|     this.currentUser = currentUser; | ||||
|     metaDataUpdateFactory = | ||||
|         getMetaDataUpdateFactory( | ||||
|             metaDataUpdateInternalFactory, currentUser, serverIdent, serverId, anonymousCowardName); | ||||
|     authorIdent = getAuthorIdent(serverIdent, currentUser); | ||||
|     // TODO(aliceks): Remove this flag when all other necessary TODOs for writing groups to NoteDb | ||||
|     // have been addressed. | ||||
|     // Don't flip this flag in a production setting! We only added it to spread the implementation | ||||
|     // of groups in NoteDb among several changes which are gradually merged. | ||||
|     writeGroupsToNoteDb = config.getBoolean(SECTION_NOTE_DB, GROUPS.key(), WRITE, false); | ||||
|  | ||||
|     reviewDbUpdatesAreBlocked = config.getBoolean("user", null, "blockReviewDbGroupUpdates", false); | ||||
|   } | ||||
|  | ||||
| @@ -212,7 +206,7 @@ public class GroupsUpdate { | ||||
|       throws OrmException, IOException, ConfigInvalidException { | ||||
|     InternalGroup createdGroupInReviewDb = createGroupInReviewDb(db, groupCreation, groupUpdate); | ||||
|  | ||||
|     if (!writeGroupsToNoteDb) { | ||||
|     if (!groupsMigration.writeToNoteDb()) { | ||||
|       updateCachesOnGroupCreation(createdGroupInReviewDb); | ||||
|       return createdGroupInReviewDb; | ||||
|     } | ||||
| @@ -249,7 +243,7 @@ public class GroupsUpdate { | ||||
|     AccountGroup group = getExistingGroupFromReviewDb(db, groupUuid); | ||||
|     UpdateResult reviewDbUpdateResult = updateGroupInReviewDb(db, group, groupUpdate); | ||||
|  | ||||
|     if (!writeGroupsToNoteDb) { | ||||
|     if (!groupsMigration.writeToNoteDb()) { | ||||
|       return reviewDbUpdateResult; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -14,23 +14,18 @@ | ||||
|  | ||||
| package com.google.gerrit.server.index.group; | ||||
|  | ||||
| import static com.google.gerrit.server.notedb.NoteDbTable.GROUPS; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.READ; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.SECTION_NOTE_DB; | ||||
|  | ||||
| import com.google.common.collect.ImmutableSet; | ||||
| import com.google.gerrit.index.IndexConfig; | ||||
| import com.google.gerrit.index.query.FieldBundle; | ||||
| import com.google.gerrit.reviewdb.client.AccountGroup; | ||||
| import com.google.gerrit.reviewdb.client.RefNames; | ||||
| 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.notedb.GroupsMigration; | ||||
| import com.google.inject.Inject; | ||||
| import com.google.inject.Singleton; | ||||
| import java.io.IOException; | ||||
| import java.util.Optional; | ||||
| import org.eclipse.jgit.lib.Config; | ||||
| import org.eclipse.jgit.lib.ObjectId; | ||||
| import org.eclipse.jgit.lib.Ref; | ||||
| import org.eclipse.jgit.lib.Repository; | ||||
| @@ -52,7 +47,7 @@ public class StalenessChecker { | ||||
|   private final GitRepositoryManager repoManager; | ||||
|   private final IndexConfig indexConfig; | ||||
|   private final AllUsersName allUsers; | ||||
|   private final Config config; | ||||
|   private final GroupsMigration groupsMigration; | ||||
|  | ||||
|   @Inject | ||||
|   StalenessChecker( | ||||
| @@ -60,16 +55,16 @@ public class StalenessChecker { | ||||
|       GitRepositoryManager repoManager, | ||||
|       IndexConfig indexConfig, | ||||
|       AllUsersName allUsers, | ||||
|       @GerritServerConfig Config config) { | ||||
|       GroupsMigration groupsMigration) { | ||||
|     this.indexes = indexes; | ||||
|     this.repoManager = repoManager; | ||||
|     this.indexConfig = indexConfig; | ||||
|     this.allUsers = allUsers; | ||||
|     this.config = config; | ||||
|     this.groupsMigration = groupsMigration; | ||||
|   } | ||||
|  | ||||
|   public boolean isStale(AccountGroup.UUID uuid) throws IOException { | ||||
|     if (!config.getBoolean(SECTION_NOTE_DB, GROUPS.key(), READ, false)) { | ||||
|     if (!groupsMigration.readFromNoteDb()) { | ||||
|       return false; // This class only treats staleness for groups in NoteDb. | ||||
|     } | ||||
|  | ||||
|   | ||||
							
								
								
									
										57
									
								
								java/com/google/gerrit/server/notedb/GroupsMigration.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								java/com/google/gerrit/server/notedb/GroupsMigration.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| // Copyright (C) 2017 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.notedb; | ||||
|  | ||||
| import static com.google.gerrit.server.notedb.NoteDbTable.GROUPS; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.READ; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.SECTION_NOTE_DB; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.WRITE; | ||||
|  | ||||
| import com.google.gerrit.server.config.GerritServerConfig; | ||||
| import com.google.inject.AbstractModule; | ||||
| import com.google.inject.Inject; | ||||
| import com.google.inject.Singleton; | ||||
| import org.eclipse.jgit.lib.Config; | ||||
|  | ||||
| @Singleton | ||||
| public class GroupsMigration { | ||||
|   public static class Module extends AbstractModule { | ||||
|     @Override | ||||
|     public void configure() { | ||||
|       bind(GroupsMigration.class); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   private final boolean writeToNoteDb; | ||||
|   private final boolean readFromNoteDb; | ||||
|  | ||||
|   @Inject | ||||
|   public GroupsMigration(@GerritServerConfig Config cfg) { | ||||
|     // TODO(aliceks): Remove these flags when all other necessary TODOs for writing groups to | ||||
|     // NoteDb have been addressed. | ||||
|     // Don't flip these flags in a production setting! We only added them to spread the | ||||
|     // implementation of groups in NoteDb among several changes which are gradually merged. | ||||
|     this.writeToNoteDb = cfg.getBoolean(SECTION_NOTE_DB, GROUPS.key(), WRITE, false); | ||||
|     this.readFromNoteDb = cfg.getBoolean(SECTION_NOTE_DB, GROUPS.key(), READ, false); | ||||
|   } | ||||
|  | ||||
|   public boolean writeToNoteDb() { | ||||
|     return writeToNoteDb; | ||||
|   } | ||||
|  | ||||
|   public boolean readFromNoteDb() { | ||||
|     return readFromNoteDb; | ||||
|   } | ||||
| } | ||||
| @@ -14,10 +14,6 @@ | ||||
|  | ||||
| package com.google.gerrit.server.schema; | ||||
|  | ||||
| import static com.google.gerrit.server.notedb.NoteDbTable.GROUPS; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.SECTION_NOTE_DB; | ||||
| import static com.google.gerrit.server.notedb.NotesMigration.WRITE; | ||||
|  | ||||
| import com.google.common.collect.ImmutableList; | ||||
| import com.google.common.collect.ImmutableSet; | ||||
| import com.google.gerrit.common.Nullable; | ||||
| @@ -49,6 +45,7 @@ import com.google.gerrit.server.group.db.InternalGroupCreation; | ||||
| import com.google.gerrit.server.group.db.InternalGroupUpdate; | ||||
| import com.google.gerrit.server.index.group.GroupIndex; | ||||
| import com.google.gerrit.server.index.group.GroupIndexCollection; | ||||
| import com.google.gerrit.server.notedb.GroupsMigration; | ||||
| import com.google.gerrit.server.notedb.NotesMigration; | ||||
| import com.google.gerrit.server.update.RefUpdateUtil; | ||||
| import com.google.gwtorm.jdbc.JdbcExecutor; | ||||
| @@ -76,7 +73,7 @@ public class SchemaCreator { | ||||
|   private final PersonIdent serverUser; | ||||
|   private final DataSourceType dataSourceType; | ||||
|   private final GroupIndexCollection indexCollection; | ||||
|   private final boolean writeGroupsToNoteDb; | ||||
|   private final GroupsMigration groupsMigration; | ||||
|  | ||||
|   private final Config config; | ||||
|   private final MetricMaker metricMaker; | ||||
| @@ -93,6 +90,7 @@ public class SchemaCreator { | ||||
|       @GerritPersonIdent PersonIdent au, | ||||
|       DataSourceType dst, | ||||
|       GroupIndexCollection ic, | ||||
|       GroupsMigration gm, | ||||
|       @GerritServerConfig Config config, | ||||
|       MetricMaker metricMaker, | ||||
|       NotesMigration migration, | ||||
| @@ -106,6 +104,7 @@ public class SchemaCreator { | ||||
|         au, | ||||
|         dst, | ||||
|         ic, | ||||
|         gm, | ||||
|         config, | ||||
|         metricMaker, | ||||
|         migration, | ||||
| @@ -121,6 +120,7 @@ public class SchemaCreator { | ||||
|       @GerritPersonIdent PersonIdent au, | ||||
|       DataSourceType dst, | ||||
|       GroupIndexCollection ic, | ||||
|       GroupsMigration gm, | ||||
|       Config config, | ||||
|       MetricMaker metricMaker, | ||||
|       NotesMigration migration, | ||||
| @@ -133,11 +133,7 @@ public class SchemaCreator { | ||||
|     serverUser = au; | ||||
|     dataSourceType = dst; | ||||
|     indexCollection = ic; | ||||
|     // TODO(aliceks): Remove this flag when all other necessary TODOs for writing groups to NoteDb | ||||
|     // have been addressed. | ||||
|     // Don't flip this flag in a production setting! We only added it to spread the implementation | ||||
|     // of groups in NoteDb among several changes which are gradually merged. | ||||
|     writeGroupsToNoteDb = config.getBoolean(SECTION_NOTE_DB, GROUPS.key(), WRITE, false); | ||||
|     groupsMigration = gm; | ||||
|  | ||||
|     this.config = config; | ||||
|     this.allProjectsName = apName; | ||||
| @@ -217,7 +213,7 @@ public class SchemaCreator { | ||||
|       throws OrmException, ConfigInvalidException, IOException { | ||||
|     InternalGroup groupInReviewDb = createGroupInReviewDb(db, groupCreation, groupUpdate); | ||||
|  | ||||
|     if (!writeGroupsToNoteDb) { | ||||
|     if (!groupsMigration.writeToNoteDb()) { | ||||
|       index(groupInReviewDb); | ||||
|       return; | ||||
|     } | ||||
|   | ||||
| @@ -32,6 +32,7 @@ import com.google.gerrit.server.config.GerritServerConfig; | ||||
| import com.google.gerrit.server.config.SitePaths; | ||||
| import com.google.gerrit.server.git.GitRepositoryManager; | ||||
| import com.google.gerrit.server.group.SystemGroupBackend; | ||||
| import com.google.gerrit.server.notedb.GroupsMigration; | ||||
| import com.google.gerrit.server.notedb.NotesMigration; | ||||
| import com.google.gerrit.testing.InMemoryDatabase; | ||||
| import com.google.gerrit.testing.InMemoryH2Type; | ||||
| @@ -115,6 +116,7 @@ public class SchemaUpdaterTest { | ||||
|  | ||||
|                     bind(SystemGroupBackend.class); | ||||
|                     install(new NotesMigration.Module()); | ||||
|                     install(new GroupsMigration.Module()); | ||||
|                     bind(MetricMaker.class).to(DisabledMetricMaker.class); | ||||
|                   } | ||||
|                 }) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Edwin Kempin
					Edwin Kempin