summaryrefslogtreecommitdiffstats
path: root/gearman/controllerWorker/ControllerWorker/Shutdown.java
diff options
context:
space:
mode:
Diffstat (limited to 'gearman/controllerWorker/ControllerWorker/Shutdown.java')
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/Shutdown.java71
1 files changed, 48 insertions, 23 deletions
diff --git a/gearman/controllerWorker/ControllerWorker/Shutdown.java b/gearman/controllerWorker/ControllerWorker/Shutdown.java
index b0c869e..9920acc 100755
--- a/gearman/controllerWorker/ControllerWorker/Shutdown.java
+++ b/gearman/controllerWorker/ControllerWorker/Shutdown.java
@@ -3,6 +3,7 @@ package ControllerWorker;
import java.io.IOException;
import java.lang.Thread;
import java.util.Date;
+import java.util.LinkedHashMap;
import java.util.StringTokenizer;
import java.util.Vector;
@@ -79,11 +80,20 @@ public class Shutdown extends Thread {
}
}
finished = true;
+ LinkedHashMap<String, Object> jsonData = new LinkedHashMap<String, Object>();
+ jsonData.put("eventName", eventName);
+ jsonData.put("type", "finishShutdownState");
if (error) {
logger.error("Shutdown of " + eventName + " failed");
+ jsonData.put("error", true);
} else {
logger.info("Shutdown of " + eventName + " finished");
+ jsonData.put("error", false);
}
+ String dataString = JSONValue.toJSONString(jsonData);
+ GearmanJob job = GearmanJobImpl.createJob("status", dataString
+ .getBytes(), "status" + eventName);
+ gearmanClient.submit(job);
}
/*
@@ -155,7 +165,7 @@ public class Shutdown extends Thread {
case USER_IS_WORKING:
logger.error(client.getIp() + " User has been working");
client.setError("The user has been working.");
- client.setState(ClientState.SHUTDOWN_ERROR);
+ client.setState(ClientState.SHUTDOWN_ERROR, gearmanClient);
break;
case SHUTDOWN_ERROR:
@@ -203,7 +213,7 @@ public class Shutdown extends Thread {
GearmanJob job = GearmanJobImpl.createJob("ping", client.getIp()
.getBytes(), "ping" + client.getId());
gearmanClient.submit(job);
- client.setState(ClientState.CHECK_PING_PROGRESS);
+ client.setState(ClientState.CHECK_PING_PROGRESS, gearmanClient);
client.addJob(ClientJob.PINGJOB, job);
logger.info("ping " + client.getIp());
}
@@ -226,14 +236,16 @@ public class Shutdown extends Thread {
if (alive.equals("true")) {
logger.info(client.getIp() + " alive");
- client.setState(ClientState.CLIENT_IS_ALIVE);
+ client.setState(ClientState.CLIENT_IS_ALIVE,
+ gearmanClient);
// check
// Users
client.removeJob(pingJob);
} else if (alive.equals("false")) {
logger.info(client.getIp() + " not alive");
// not alive, go in successState
- client.setState(ClientState.SHUTDOWN_SUCCESS);
+ client.setState(ClientState.SHUTDOWN_SUCCESS,
+ gearmanClient);
client.removeJob(pingJob);
}
} else {
@@ -242,7 +254,8 @@ public class Shutdown extends Thread {
client
.setError("Sending the ping message has been failed.");
// sending the ping message has been failed
- client.setState(ClientState.SHUTDOWN_ERROR);
+ client.setState(ClientState.SHUTDOWN_ERROR,
+ gearmanClient);
client.removeJob(pingJob);
}
}
@@ -254,7 +267,7 @@ public class Shutdown extends Thread {
GearmanJob job = GearmanJobImpl.createJob("who", client.getIp()
.getBytes(), "who" + client.getId());
gearmanClient.submit(job);
- client.setState(ClientState.CHECK_WHO_PROGRESS);
+ client.setState(ClientState.CHECK_WHO_PROGRESS, gearmanClient);
client.addJob(ClientJob.WHOJOB, job);
logger.info("who " + client.getIp());
}
@@ -287,14 +300,16 @@ public class Shutdown extends Thread {
// no user is logged in
// -----
// didnĀ“t work in test-pool, check ps
- client.setState(ClientState.USER_IS_LOGGED_IN);
+ client.setState(ClientState.USER_IS_LOGGED_IN,
+ gearmanClient);
client.removeJob(whoJob);
} else {
logger
.info(client.getIp()
+ " a user is logged in");
// a user is logged in
- client.setState(ClientState.USER_IS_LOGGED_IN);
+ client.setState(ClientState.USER_IS_LOGGED_IN,
+ gearmanClient);
client.removeJob(whoJob);
}
} else {
@@ -305,7 +320,8 @@ public class Shutdown extends Thread {
/*
* cannot check if a user is logged in, go in errorState
*/
- client.setState(ClientState.SHUTDOWN_ERROR);
+ client.setState(ClientState.SHUTDOWN_ERROR,
+ gearmanClient);
client.removeJob(whoJob);
}
}
@@ -318,7 +334,7 @@ public class Shutdown extends Thread {
.getBytes(), "doShutdown" + client.getId());
gearmanClient.submit(job);
- client.setState(ClientState.CHECK_SHUTDOWN_PROGRESS);
+ client.setState(ClientState.CHECK_SHUTDOWN_PROGRESS, gearmanClient);
client.addJob(ClientJob.SHUTDOWNJOB, job);
logger.info("doShutdown " + client.getIp());
}
@@ -338,7 +354,8 @@ public class Shutdown extends Thread {
JSONObject resultObj = (JSONObject) JSONValue.parse(result);
if (!resultObj.containsKey("err")) {
logger.info(client.getIp() + " Shutdown command sent");
- client.setState(ClientState.SHUTDOWN_COMMAND_SENT);
+ client.setState(ClientState.SHUTDOWN_COMMAND_SENT,
+ gearmanClient);
client.removeJob(doShutdownJob);
} else {
logger.error(client.getIp()
@@ -346,7 +363,8 @@ public class Shutdown extends Thread {
client
.setError("Sending the shutdown command has been failed.");
// cannot send shutdown command, go in / errorState
- client.setState(ClientState.SHUTDOWN_ERROR);
+ client.setState(ClientState.SHUTDOWN_ERROR,
+ gearmanClient);
client.removeJob(doShutdownJob);
}
}
@@ -358,7 +376,9 @@ public class Shutdown extends Thread {
GearmanJob job = GearmanJobImpl.createJob("ping", client.getIp()
.getBytes(), "ping" + client.getId());
gearmanClient.submit(job);
- client.setState(ClientState.CHECK_PING_SHUTDOWN_PROGRESS);
+ client
+ .setState(ClientState.CHECK_PING_SHUTDOWN_PROGRESS,
+ gearmanClient);
client.addJob(ClientJob.PINGJOB, job);
logger.info("ping " + client.getIp());
}
@@ -389,14 +409,16 @@ public class Shutdown extends Thread {
if (alive.equals("false")) {
logger.info(client.getIp()
+ " is not alive anymore");
- client.setState(ClientState.SHUTDOWN_SUCCESS);
+ client.setState(ClientState.SHUTDOWN_SUCCESS,
+ gearmanClient);
client.removeJob(pingJobShutdown);
} else if (alive.equals("true")) {
logger
.info(client.getIp()
+ " is still alive after shutdown command");
- client
- .setState(ClientState.PING_SHUTDOWN_AGAIN);
+ client.setState(
+ ClientState.PING_SHUTDOWN_AGAIN,
+ gearmanClient);
}
} else {
logger
@@ -408,7 +430,8 @@ public class Shutdown extends Thread {
* sending the ping after shutdown message has been
* failed
*/
- client.setState(ClientState.SHUTDOWN_ERROR);
+ client.setState(ClientState.SHUTDOWN_ERROR,
+ gearmanClient);
client.removeJob(pingJobShutdown);
}
}
@@ -417,7 +440,7 @@ public class Shutdown extends Thread {
logger.error(client.getIp() + " is alive after shutdown");
client.setError("Client is still alive after shutdown.");
// still alive, go in errorState
- client.setState(ClientState.SHUTDOWN_ERROR);
+ client.setState(ClientState.SHUTDOWN_ERROR, gearmanClient);
client.removeJob(pingJobShutdown);
}
}
@@ -427,7 +450,7 @@ public class Shutdown extends Thread {
GearmanJob job = GearmanJobImpl.createJob("ps", client.getIp()
.getBytes(), "ps" + client.getId());
gearmanClient.submit(job);
- client.setState(ClientState.CHECK_PS_PROGRESS);
+ client.setState(ClientState.CHECK_PS_PROGRESS, gearmanClient);
client.addJob(ClientJob.PSJOB, job);
logger.info("ps " + client.getIp());
}
@@ -470,13 +493,15 @@ public class Shutdown extends Thread {
*
* } else {
*/
- client.setState(ClientState.USER_IS_WORKING);
+ client.setState(ClientState.USER_IS_WORKING,
+ gearmanClient);
client.removeJob(psJob);
// }
} else {
logger.info(client.getIp() + " is not working");
// is not working
- client.setState(ClientState.SHUTDOWN_CLIENT);
+ client.setState(ClientState.SHUTDOWN_CLIENT,
+ gearmanClient);
client.removeJob(psJob);
}
} else {
@@ -487,7 +512,8 @@ public class Shutdown extends Thread {
/*
* cannot check if user is working, go in errorState
*/
- client.setState(ClientState.SHUTDOWN_ERROR);
+ client.setState(ClientState.SHUTDOWN_ERROR,
+ gearmanClient);
client.removeJob(psJob);
}
}
@@ -510,5 +536,4 @@ public class Shutdown extends Thread {
public String getEventName() {
return eventName;
}
-
} \ No newline at end of file