Add {pre,post}RestartCustom hooks
Can't rely on {pre,post}Stop/Start hooks being called on restart.
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit:
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/d3beb51c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/d3beb51c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/d3beb51c
Branch: refs/heads/master
Commit: d3beb51ca7c766abf6903044d1f1ec0f4c655e94
Parents: db5111a
Author: Svetoslav Neykov <[email protected]>
Authored: Fri Feb 27 12:54:00 2015 +0200
Committer: Svetoslav Neykov <[email protected]>
Committed: Thu Mar 19 16:01:28 2015 +0200
----------------------------------------------------------------------
...twareProcessDriverLifecycleEffectorTasks.java | 19 +++++++++++++++++++
.../entity/basic/SoftwareProcessImpl.java | 6 ++++++
.../software/MachineLifecycleEffectorTasks.java | 19 +++++++++++++++++++
3 files changed, 44 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d3beb51c/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessDriverLifecycleEffectorTasks.java
----------------------------------------------------------------------
diff --git
a/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessDriverLifecycleEffectorTasks.java
b/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessDriverLifecycleEffectorTasks.java
index 158817e..df706fd 100644
---
a/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessDriverLifecycleEffectorTasks.java
+++
b/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessDriverLifecycleEffectorTasks.java
@@ -60,6 +60,10 @@ public class SoftwareProcessDriverLifecycleEffectorTasks
extends MachineLifecycl
return;
}
+ DynamicTasks.queue("pre-restart", new Runnable() { public void run() {
+ preRestartCustom();
+ }});
+
log.debug("restart of "+entity()+" appears to have driver and hostname
- doing driver-level restart");
entity().getDriver().restart();
@@ -67,6 +71,7 @@ public class SoftwareProcessDriverLifecycleEffectorTasks
extends MachineLifecycl
DynamicTasks.queue("post-restart", new Runnable() { public void run() {
postStartCustom();
+ postRestartCustom();
ServiceStateLogic.setExpectedState(entity(), Lifecycle.RUNNING);
}});
}
@@ -176,6 +181,20 @@ public class SoftwareProcessDriverLifecycleEffectorTasks
extends MachineLifecycl
}
@Override
+ protected void preRestartCustom() {
+ super.preRestartCustom();
+
+ entity().preRestart();
+ }
+
+ @Override
+ protected void postRestartCustom() {
+ super.postRestartCustom();
+
+ entity().postRestart();
+ }
+
+ @Override
protected String stopProcessesAtMachine() {
String result;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d3beb51c/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java
----------------------------------------------------------------------
diff --git
a/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java
b/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java
index 4b876ea..f05d0fb 100644
--- a/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java
+++ b/software/base/src/main/java/brooklyn/entity/basic/SoftwareProcessImpl.java
@@ -271,6 +271,12 @@ public abstract class SoftwareProcessImpl extends
AbstractEntity implements Soft
protected void postStop() {
}
+ protected void preRestart() {
+ }
+
+ protected void postRestart() {
+ }
+
/**
* For disconnecting from the running app. Will be called on stop.
*/
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d3beb51c/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
----------------------------------------------------------------------
diff --git
a/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
b/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
index 8a1279c..0edd488 100644
---
a/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
+++
b/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
@@ -477,6 +477,13 @@ public abstract class MachineLifecycleEffectorTasks {
if (isRestartMachine==RestartMachineMode.AUTO)
isRestartMachine = getDefaultRestartStopsMachine() ?
RestartMachineMode.TRUE : RestartMachineMode.FALSE;
+ DynamicTasks.queue("pre-restart", new Runnable() { public void run() {
+ //Calling preStopCustom without a corresponding postStopCustom
invocation
+ //doesn't look right so use a separate callback pair; Also
depending on the arguments
+ //stop() could be called which will call the {pre,post}StopCustom
on its own.
+ preRestartCustom();
+ }});
+
if (isRestartMachine==RestartMachineMode.FALSE) {
DynamicTasks.queue("stopping (process)", new Callable<String>() {
public String call() {
DynamicTasks.markInessential();
@@ -502,6 +509,10 @@ public abstract class MachineLifecycleEffectorTasks {
restartChildren(parameters);
+ DynamicTasks.queue("post-restart", new Runnable() { public void run() {
+ postRestartCustom();
+ }});
+
DynamicTasks.waitForLast();
ServiceStateLogic.setExpectedState(entity(), Lifecycle.RUNNING);
}
@@ -673,6 +684,14 @@ public abstract class MachineLifecycleEffectorTasks {
// nothing needed here
}
+ protected void preRestartCustom() {
+ // nothing needed here
+ }
+
+ protected void postRestartCustom() {
+ // nothing needed here
+ }
+
public static class StopMachineDetails<T> implements Serializable {
private static final long serialVersionUID = 3256747214315895431L;
final String message;