diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-01-15 10:37:28 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-01-15 10:37:28 +0100 |
commit | 463e7b4bc20fc45392230c3292aa76d2f1d18ee4 (patch) | |
tree | 53f9c06cceaaf64e6af19a78f31a751f130e73eb | |
parent | 63734f83ebeb2ccdc025b06e4929dff7d44b1316 (diff) |
Handle no result being set after abort and interrupt
3 files changed, 11 insertions, 8 deletions
diff --git a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java index 3b7c9160b53..37f9d830da8 100644 --- a/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java +++ b/clustercontroller-reindexer/src/main/java/ai/vespa/reindexing/Reindexer.java @@ -3,12 +3,12 @@ package ai.vespa.reindexing; import ai.vespa.reindexing.Reindexing.Status; import ai.vespa.reindexing.ReindexingCurator.ReindexingLockException; -import com.google.inject.Inject; import com.yahoo.document.DocumentType; import com.yahoo.document.select.parser.ParseException; import com.yahoo.documentapi.DocumentAccess; import com.yahoo.documentapi.ProgressToken; import com.yahoo.documentapi.VisitorControlHandler; +import com.yahoo.documentapi.VisitorControlHandler.CompletionCode; import com.yahoo.documentapi.VisitorParameters; import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol; import com.yahoo.jdisc.Metric; @@ -33,7 +33,7 @@ import static java.util.logging.Level.WARNING; /** * Progresses reindexing efforts by creating visitor sessions against its own content cluster, - * which send documents straight to storage — via indexing if the documenet type has "index" mode. + * which send documents straight to storage — via indexing if the document type has "index" mode. * The {@link #reindex} method blocks until shutdown is called, or until no more reindexing is left to do. * * @author jonmv @@ -172,11 +172,14 @@ public class Reindexer { Runnable sessionShutdown = visitorSessions.apply(parameters); // Also starts the visitor session. log.log(FINE, () -> "Running reindexing of " + type); - // Wait until done; or until termination is forced, in which we shut down the visitor session immediately. + // Wait until done; or until termination is forced, in which case we shut down the visitor session immediately. phaser.arriveAndAwaitAdvance(); // Synchronize with visitor completion. - sessionShutdown.run(); // Shutdown aborts the session unless already complete, then waits for it to terminate normally. + sessionShutdown.run(); // Shutdown aborts the session unless already complete, then waits for it to terminate normally. + // Only as a last resort will we be interrupted here, and the wait for outstanding replies terminate. - switch (control.getResult().getCode()) { + CompletionCode result = control.getResult() != null ? control.getResult().getCode() + : CompletionCode.ABORTED; + switch (result) { default: log.log(WARNING, "Unexpected visitor result '" + control.getResult().getCode() + "'"); case FAILURE: // Intentional fallthrough — this is an error. diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java index 5e15e136780..aa8b5892a3a 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDestinationSession.java @@ -4,7 +4,7 @@ package com.yahoo.documentapi; /** * A visitor destination session for receiving data from a visitor. * - * @author <a href="mailto:thomasg@yahoo-inc.com">Thomas Gundersen</a> + * @author Thomas Gundersen */ public interface VisitorDestinationSession extends VisitorControlSession { } diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java index 92abd8c98ca..ae0a89664a5 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusVisitorDestinationSession.java @@ -26,9 +26,9 @@ import java.util.logging.Logger; * <code>MessageBusDocumentAccess.createVisitorSession</code> method and * progress tracked through the resulting visitor session. * - * @author <a href="mailto:thomasg@yahoo-inc.com">Thomas Gundersen</a> + * @author Thomas Gundersen */ -public class MessageBusVisitorDestinationSession implements VisitorDestinationSession,MessageHandler +public class MessageBusVisitorDestinationSession implements VisitorDestinationSession, MessageHandler { private static final Logger log = Logger.getLogger(MessageBusVisitorDestinationSession.class.getName()); |