summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2019-07-11 09:04:53 +0900
committerDavid Pursehouse <dpursehouse@collab.net>2019-07-11 09:04:53 +0900
commit690191b34afe0621c66cc7fbdb4f3eabea048491 (patch)
tree505e8c16e8c2a57d0d53ba978c5644fa0c3e704c
parent04c93dee55ddaa039f1a204e7ae946c7556a8a34 (diff)
parent565f7f820eda5b52a5607cd820c852a09541b6e0 (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
-rw-r--r--java/com/google/gerrit/pgm/init/BaseInit.java8
-rw-r--r--java/com/google/gerrit/server/index/OnlineReindexMode.java33
-rw-r--r--java/com/google/gerrit/server/index/change/AllChangesIndexer.java5
-rw-r--r--java/com/google/gerrit/server/project/SubmitRuleEvaluator.java3
-rwxr-xr-xresources/com/google/gerrit/pgm/init/gerrit.sh2
-rw-r--r--resources/com/google/gerrit/server/mail/Merged.soy2
-rw-r--r--resources/com/google/gerrit/server/mail/MergedHtml.soy2
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}