summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon@oath.com>2018-02-12 14:26:19 +0100
committerGitHub <noreply@github.com>2018-02-12 14:26:19 +0100
commit459919156c8746f530154ac48bfd5d1c22082956 (patch)
tree123c5f9f5761b238d74cb417a596fe2bd16cfd0d
parent7d8fdd685c3fedb2b263b356c67f84d92a2a6f89 (diff)
parent0a695f87c1746afcf86d94463d22c2d03f9d9735 (diff)
Merge pull request #5004 from vespa-engine/hakonhall/support-proprietary-contexts
Support proprietary contexts
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java8
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java9
4 files changed, 7 insertions, 18 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java
index b6b64dbf5dd..a1cc192be2a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/IdempotentTask.java
@@ -3,8 +3,12 @@ package com.yahoo.vespa.hosted.node.admin.component;
/**
* This class is thread unsafe: All method calls MUST be exclusive and serialized.
+ *
+ * In a specialized environment it is possible to provide a richer context than TaskContext:
+ * - Define a subclass T of TaskContext with the additional functionality.
+ * - Define task classes that implement IdempotentTask&lt;T&gt;.
*/
-public interface IdempotentTask {
+public interface IdempotentTask<T extends TaskContext> {
String name();
/**
@@ -17,5 +21,5 @@ public interface IdempotentTask {
* @return false if the system was already converged, i.e. converge() was a no-op.
* @throws RuntimeException (or a subclass) if the task is unable to converge.
*/
- boolean converge(TaskContext context);
+ boolean converge(T context);
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java
index c54f9ee00c8..cbe9b32cc47 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskComponent.java
@@ -4,7 +4,7 @@ package com.yahoo.vespa.hosted.node.admin.component;
import com.yahoo.component.ComponentId;
import com.yahoo.component.chain.ChainedComponent;
-public abstract class TaskComponent extends ChainedComponent implements IdempotentTask {
+public abstract class TaskComponent extends ChainedComponent implements IdempotentTask<TaskContext> {
protected TaskComponent(ComponentId id) {
super(id);
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java
index d0a5570b8dc..0c49e478d6a 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TaskContext.java
@@ -50,10 +50,4 @@ public interface TaskContext {
* or later if the task failed. Either way, it will only be called once.
*/
default void logOnFailure(Logger logger, Supplier<String> messageSupplier) {}
-
- /**
- * Execute a task as a child of this task, and with its own sub-TaskContext. Please avoid
- * excessive task hierarchies.
- */
- boolean executeSubtask(IdempotentTask task);
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java
index 108d42114f7..bc0ec2c8700 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/component/TestTaskContext.java
@@ -4,7 +4,6 @@ package com.yahoo.vespa.hosted.node.admin.component;
import java.util.ArrayList;
import java.util.List;
-import java.util.function.Supplier;
import java.util.logging.Logger;
public class TestTaskContext implements TaskContext {
@@ -18,9 +17,6 @@ public class TestTaskContext implements TaskContext {
@Override
public void log(Logger logger, String message) { }
- @Override
- public void logOnFailure(Logger logger, Supplier<String> messageSupplier) { }
-
public List<String> getSystemModificationLog() {
return systemModifications;
}
@@ -28,9 +24,4 @@ public class TestTaskContext implements TaskContext {
public void clearSystemModificationLog() {
systemModifications.clear();
}
-
- @Override
- public boolean executeSubtask(IdempotentTask task) {
- throw new UnsupportedOperationException();
- }
}