diff options
author | HÃ¥kon Hallingstad <hakon@oath.com> | 2018-02-12 14:26:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-12 14:26:19 +0100 |
commit | 459919156c8746f530154ac48bfd5d1c22082956 (patch) | |
tree | 123c5f9f5761b238d74cb417a596fe2bd16cfd0d | |
parent | 7d8fdd685c3fedb2b263b356c67f84d92a2a6f89 (diff) | |
parent | 0a695f87c1746afcf86d94463d22c2d03f9d9735 (diff) |
Merge pull request #5004 from vespa-engine/hakonhall/support-proprietary-contexts
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(); - } } |