summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java122
1 files changed, 0 insertions, 122 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java
deleted file mode 100644
index 0653192308..0000000000
--- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/rebuild/GcAllUsers.java
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright (C) 2018 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.rebuild;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_GC_SECTION;
-import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_AUTO;
-
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
-import com.google.gerrit.common.Nullable;
-import com.google.gerrit.common.data.GarbageCollectionResult;
-import com.google.gerrit.server.config.AllUsersName;
-import com.google.gerrit.server.git.GarbageCollection;
-import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.git.LocalDiskRepositoryManager;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.function.Consumer;
-import org.eclipse.jgit.lib.Repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Singleton
-public class GcAllUsers {
- private static final Logger log = LoggerFactory.getLogger(GcAllUsers.class);
-
- private final AllUsersName allUsers;
- private final GarbageCollection.Factory gcFactory;
- private final GitRepositoryManager repoManager;
-
- @Inject
- GcAllUsers(
- AllUsersName allUsers,
- GarbageCollection.Factory gcFactory,
- GitRepositoryManager repoManager) {
- this.allUsers = allUsers;
- this.gcFactory = gcFactory;
- this.repoManager = repoManager;
- }
-
- public void runWithLogger() {
- // Print log messages using logger, and skip progress.
- run(s -> log.info(s), null);
- }
-
- public void run(PrintWriter writer) {
- // Print both log messages and progress to given writer.
- run(checkNotNull(writer)::println, writer);
- }
-
- private void run(Consumer<String> logOneLine, @Nullable PrintWriter progressWriter) {
- if (!(repoManager instanceof LocalDiskRepositoryManager)) {
- logOneLine.accept("Skipping GC of " + allUsers + "; not a local disk repo");
- return;
- }
- if (!enableAutoGc(logOneLine)) {
- logOneLine.accept(
- "Skipping GC of "
- + allUsers
- + " due to disabling "
- + CONFIG_GC_SECTION
- + "."
- + CONFIG_KEY_AUTO);
- logOneLine.accept(
- "If loading accounts is slow after the NoteDb migration, run `git gc` on "
- + allUsers
- + " manually");
- return;
- }
-
- if (progressWriter == null) {
- // Mimic log line from GarbageCollection.
- logOneLine.accept("collecting garbage for \"" + allUsers + "\":\n");
- }
- GarbageCollectionResult result =
- gcFactory.create().run(ImmutableList.of(allUsers), progressWriter);
- if (!result.hasErrors()) {
- return;
- }
- for (GarbageCollectionResult.Error e : result.getErrors()) {
- switch (e.getType()) {
- case GC_ALREADY_SCHEDULED:
- logOneLine.accept("GC already scheduled for " + e.getProjectName());
- break;
- case GC_FAILED:
- logOneLine.accept("GC failed for " + e.getProjectName());
- break;
- case REPOSITORY_NOT_FOUND:
- logOneLine.accept(e.getProjectName() + " repo not found");
- break;
- default:
- logOneLine.accept("GC failed for " + e.getProjectName() + ": " + e.getType());
- break;
- }
- }
- }
-
- private boolean enableAutoGc(Consumer<String> logOneLine) {
- try (Repository repo = repoManager.openRepository(allUsers)) {
- return repo.getConfig().getInt(CONFIG_GC_SECTION, CONFIG_KEY_AUTO, -1) != 0;
- } catch (IOException e) {
- logOneLine.accept(
- "Error reading config for " + allUsers + ":\n" + Throwables.getStackTraceAsString(e));
- return false;
- }
- }
-}