Author: markt
Date: Thu Oct 17 10:32:21 2013
New Revision: 1533035
URL: http://svn.apache.org/r1533035
Log:
Avoid hangs on shutdown
Modified:
tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
Modified:
tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java?rev=1533035&r1=1533034&r2=1533035&view=diff
==============================================================================
---
tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
(original)
+++
tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
Thu Oct 17 10:32:21 2013
@@ -316,7 +316,9 @@ public final class Room {
public void run() {
closed = true;
drawmessageBroadcastTimer.cancel();
- roomGraphics.dispose();
+ if (!ShutdownDetection.hasShutdownStarted()) {
+ roomGraphics.dispose();
+ }
}
});
}
@@ -412,4 +414,23 @@ public final class Room {
client.sendMessage(new StringWebsocketMessage(completeMsg));
}
}
+
+
+ static {
+ Runtime.getRuntime().addShutdownHook(new ShutdownDetection());
+ }
+
+
+ private static class ShutdownDetection extends Thread {
+ private static volatile boolean shutdownStarted = false;
+
+ private static boolean hasShutdownStarted() {
+ return shutdownStarted;
+ }
+
+ @Override
+ public void run() {
+ shutdownStarted = true;
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]