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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to