Merge "Add an optional flag to force an online reindex"
This commit is contained in:
@@ -6,7 +6,7 @@ gerrit index start - Start the online indexer
|
||||
== SYNOPSIS
|
||||
[verse]
|
||||
--
|
||||
_ssh_ -p <port> <host> _gerrit index start_ <INDEX>
|
||||
_ssh_ -p <port> <host> _gerrit index start_ <INDEX> [--force]
|
||||
--
|
||||
|
||||
== DESCRIPTION
|
||||
@@ -33,8 +33,11 @@ This command is intended to be used in scripts.
|
||||
* changes
|
||||
* accounts
|
||||
|
||||
--force::
|
||||
Force an online re-index.
|
||||
|
||||
== EXAMPLES
|
||||
Start the online indexer for the changes index:
|
||||
Start the online indexer for the 'changes' index:
|
||||
|
||||
----
|
||||
$ ssh -p 29418 review.example.com gerrit index start changes
|
||||
|
||||
@@ -163,11 +163,11 @@ public class LuceneVersionManager implements LifecycleListener {
|
||||
markNotReady(cfg, def.getName(), versions.values(), write);
|
||||
|
||||
int latest = write.get(0).version;
|
||||
if (onlineUpgrade && latest != search.version) {
|
||||
OnlineReindexer<K, V, I> reindexer = new OnlineReindexer<>(def, latest);
|
||||
reindexers.put(def.getName(), reindexer);
|
||||
if (onlineUpgrade && latest != search.version) {
|
||||
synchronized (this) {
|
||||
if (!reindexers.containsKey(def.getName())) {
|
||||
reindexers.put(def.getName(), reindexer);
|
||||
reindexer.start();
|
||||
}
|
||||
}
|
||||
@@ -177,14 +177,15 @@ public class LuceneVersionManager implements LifecycleListener {
|
||||
/**
|
||||
* Start the online reindexer if the current index is not already the latest.
|
||||
*
|
||||
* @param force start re-index
|
||||
* @return true if started, otherwise false.
|
||||
* @throws ReindexerAlreadyRunningException
|
||||
*/
|
||||
public synchronized boolean startReindexer(String name)
|
||||
public synchronized boolean startReindexer(String name, boolean force)
|
||||
throws ReindexerAlreadyRunningException {
|
||||
OnlineReindexer<?, ?, ?> reindexer = reindexers.get(name);
|
||||
validateReindexerNotRunning(reindexer);
|
||||
if (!isCurrentIndexVersionLatest(name, reindexer)) {
|
||||
if (force || !isCurrentIndexVersionLatest(name, reindexer)) {
|
||||
reindexer.start();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -23,11 +23,15 @@ import com.google.gerrit.sshd.SshCommand;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import org.kohsuke.args4j.Argument;
|
||||
import org.kohsuke.args4j.Option;
|
||||
|
||||
@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
|
||||
@CommandMetaData(name = "start", description = "Start the online reindexer")
|
||||
public class IndexStartCommand extends SshCommand {
|
||||
|
||||
@Option(name = "--force", usage = "force a re-index")
|
||||
private boolean force;
|
||||
|
||||
@Argument(index = 0, required = true, metaVar = "INDEX",
|
||||
usage = "index name to start")
|
||||
private String name;
|
||||
@@ -38,7 +42,7 @@ public class IndexStartCommand extends SshCommand {
|
||||
@Override
|
||||
protected void run() throws UnloggedFailure {
|
||||
try {
|
||||
if (luceneVersionManager.startReindexer(name)) {
|
||||
if (luceneVersionManager.startReindexer(name, force)) {
|
||||
stdout.println("Reindexer started");
|
||||
} else {
|
||||
stdout.println("Nothing to reindex, index is already the latest version");
|
||||
|
||||
Reference in New Issue
Block a user