diff options
author | David Pursehouse <dpursehouse@collab.net> | 2019-07-11 09:04:53 +0900 |
---|---|---|
committer | David Pursehouse <dpursehouse@collab.net> | 2019-07-11 09:04:53 +0900 |
commit | 690191b34afe0621c66cc7fbdb4f3eabea048491 (patch) | |
tree | 505e8c16e8c2a57d0d53ba978c5644fa0c3e704c | |
parent | 04c93dee55ddaa039f1a204e7ae946c7556a8a34 (diff) | |
parent | 565f7f820eda5b52a5607cd820c852a09541b6e0 (diff) |
Merge branch 'stable-2.16' into stable-3.0
* stable-2.16:
Fix transitive load of GWT_PLUGIN_DEPS for in-tree plugin builds
Bazel: Move PLUGIN_DEPS_NEVERLINK declaration to plugin.bzl
Adapt gerrit.sh script to work on Alpine Linux
Make wording of "Merged" html and text templates consistent
Online index upgrade: skip submit rules for closed changes
BaseInit: Don't throw if schema cannot be upgraded
Change-Id: Id6a6034c6a2bcd1456d0b6095ef023c402388be1
7 files changed, 43 insertions, 12 deletions
diff --git a/java/com/google/gerrit/pgm/init/BaseInit.java b/java/com/google/gerrit/pgm/init/BaseInit.java index 9e496db26d..27bc5c7e32 100644 --- a/java/com/google/gerrit/pgm/init/BaseInit.java +++ b/java/com/google/gerrit/pgm/init/BaseInit.java @@ -34,7 +34,6 @@ import com.google.gerrit.pgm.init.index.IndexManagerOnInit; import com.google.gerrit.pgm.init.index.elasticsearch.ElasticIndexModuleOnInit; import com.google.gerrit.pgm.init.index.lucene.LuceneIndexModuleOnInit; import com.google.gerrit.pgm.util.SiteProgram; -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.config.SitePaths; @@ -51,7 +50,6 @@ import com.google.inject.CreationException; import com.google.inject.Guice; import com.google.inject.Inject; import com.google.inject.Injector; -import com.google.inject.Key; import com.google.inject.Module; import com.google.inject.TypeLiteral; import com.google.inject.spi.Message; @@ -68,7 +66,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; -import org.eclipse.jgit.lib.Config; /** Initialize a new Gerrit installation. */ public class BaseInit extends SiteProgram { @@ -79,7 +76,6 @@ public class BaseInit extends SiteProgram { private final List<String> pluginsToInstall; private Injector sysInjector; - private Config config; protected BaseInit(PluginsDistribution pluginsDistribution, List<String> pluginsToInstall) { this.standalone = true; @@ -124,9 +120,6 @@ public class BaseInit extends SiteProgram { try { run.upgradeSchema(); } catch (StorageException e) { - if (config.getBoolean("container", "slave", false)) { - throw e; - } String msg = "Couldn't upgrade schema. Expected if slave and read-only database"; System.err.println(msg); logger.atWarning().withCause(e).log(msg); @@ -418,7 +411,6 @@ public class BaseInit extends SiteProgram { } }); Injector dbInjector = createDbInjector(); - config = dbInjector.getInstance(Key.get(Config.class, GerritServerConfig.class)); switch (IndexModule.getIndexType(dbInjector)) { case LUCENE: diff --git a/java/com/google/gerrit/server/index/OnlineReindexMode.java b/java/com/google/gerrit/server/index/OnlineReindexMode.java new file mode 100644 index 0000000000..123229a96e --- /dev/null +++ b/java/com/google/gerrit/server/index/OnlineReindexMode.java @@ -0,0 +1,33 @@ +// Copyright (C) 2019 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.index; + +import java.util.Optional; + +public class OnlineReindexMode { + private static ThreadLocal<Boolean> isOnlineReindex = new ThreadLocal<>(); + + public static boolean isActive() { + return Optional.ofNullable(isOnlineReindex.get()).orElse(Boolean.FALSE); + } + + public static void begin() { + isOnlineReindex.set(Boolean.TRUE); + } + + public static void end() { + isOnlineReindex.set(Boolean.FALSE); + } +} diff --git a/java/com/google/gerrit/server/index/change/AllChangesIndexer.java b/java/com/google/gerrit/server/index/change/AllChangesIndexer.java index 577c255086..7082e081ea 100644 --- a/java/com/google/gerrit/server/index/change/AllChangesIndexer.java +++ b/java/com/google/gerrit/server/index/change/AllChangesIndexer.java @@ -33,6 +33,7 @@ import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.MultiProgressMonitor; import com.google.gerrit.server.git.MultiProgressMonitor.Task; import com.google.gerrit.server.index.IndexExecutor; +import com.google.gerrit.server.index.OnlineReindexMode; import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.notedb.ChangeNotes.Factory.ChangeNotesResult; import com.google.gerrit.server.project.ProjectCache; @@ -211,6 +212,8 @@ public class AllChangesIndexer extends SiteIndexer<Change.Id, ChangeData, Change @Override public Void call() throws Exception { try (Repository repo = repoManager.openRepository(project)) { + OnlineReindexMode.begin(); + // Order of scanning changes is undefined. This is ok if we assume that packfile locality is // not important for indexing, since sites should have a fully populated DiffSummary cache. // It does mean that reindexing after invalidating the DiffSummary cache will be expensive, @@ -219,6 +222,8 @@ public class AllChangesIndexer extends SiteIndexer<Change.Id, ChangeData, Change notesFactory.scan(repo, project).forEach(r -> index(r)); } catch (RepositoryNotFoundException rnfe) { logger.atSevere().log(rnfe.getMessage()); + } finally { + OnlineReindexMode.end(); } return null; } diff --git a/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java b/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java index 85d91e7887..1b1869ca2e 100644 --- a/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java +++ b/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java @@ -20,6 +20,7 @@ import com.google.gerrit.common.data.SubmitRecord; import com.google.gerrit.common.data.SubmitTypeRecord; import com.google.gerrit.exceptions.StorageException; import com.google.gerrit.reviewdb.client.Change; +import com.google.gerrit.server.index.OnlineReindexMode; import com.google.gerrit.server.plugincontext.PluginSetContext; import com.google.gerrit.server.query.change.ChangeData; import com.google.gerrit.server.rules.PrologRule; @@ -102,7 +103,7 @@ public class SubmitRuleEvaluator { return ruleError("Error looking up change " + cd.getId(), e); } - if (!opts.allowClosed() && change.isClosed()) { + if ((!opts.allowClosed() || OnlineReindexMode.isActive()) && change.isClosed()) { SubmitRecord rec = new SubmitRecord(); rec.status = SubmitRecord.Status.CLOSED; return Collections.singletonList(rec); diff --git a/resources/com/google/gerrit/pgm/init/gerrit.sh b/resources/com/google/gerrit/pgm/init/gerrit.sh index 23f86eef36..6da1f8d545 100755 --- a/resources/com/google/gerrit/pgm/init/gerrit.sh +++ b/resources/com/google/gerrit/pgm/init/gerrit.sh @@ -63,7 +63,7 @@ test $# -gt 0 || usage running() { test -f $1 || return 1 PID=`cat $1` - ps -p $PID >/dev/null 2>/dev/null || return 1 + ps -o pid | grep -w $PID >/dev/null 2>/dev/null || return 1 return 0 } diff --git a/resources/com/google/gerrit/server/mail/Merged.soy b/resources/com/google/gerrit/server/mail/Merged.soy index 04d54c4098..899d1c0f4b 100644 --- a/resources/com/google/gerrit/server/mail/Merged.soy +++ b/resources/com/google/gerrit/server/mail/Merged.soy @@ -25,7 +25,7 @@ {@param change: ?} {@param email: ?} {@param fromName: ?} - {$fromName} has submitted this change and it was merged. + {$fromName} has submitted this change. {if $email.changeUrl} ( {$email.changeUrl} ){/if}{\n} {\n} Change subject: {$change.subject}{\n} diff --git a/resources/com/google/gerrit/server/mail/MergedHtml.soy b/resources/com/google/gerrit/server/mail/MergedHtml.soy index e8c04a53e8..f0a47c71e8 100644 --- a/resources/com/google/gerrit/server/mail/MergedHtml.soy +++ b/resources/com/google/gerrit/server/mail/MergedHtml.soy @@ -21,7 +21,7 @@ {@param email: ?} {@param fromName: ?} <p> - {$fromName} <strong>merged</strong> this change. + {$fromName} <strong>submitted</strong> this change. </p> {if $email.changeUrl} |