diff options
author | Håkon Hallingstad <hakon@oath.com> | 2018-02-11 20:28:57 +0100 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2018-02-11 20:28:57 +0100 |
commit | a9f9eb7ca9995e0a86ec15a472b6508dfa8ffc18 (patch) | |
tree | 58c43e11bf6961a06a3d8398701473e059391f95 | |
parent | ead0a8b621cc85b67f454f2fbc089dcb5cf48fee (diff) |
Support proprietary contexts
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<T>. */ -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(); - } } |