[hornetq-commits] JBoss hornetq SVN: r8703 - trunk/src/main/org/hornetq/core/server/impl.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Dec 22 06:14:43 EST 2009


Author: jmesnil
Date: 2009-12-22 06:14:43 -0500 (Tue, 22 Dec 2009)
New Revision: 8703

Modified:
   trunk/src/main/org/hornetq/core/server/impl/ServerSessionImpl.java
Log:
HORNETQ-256: ensure all operations are completed before closing the session

Modified: trunk/src/main/org/hornetq/core/server/impl/ServerSessionImpl.java
===================================================================
--- trunk/src/main/org/hornetq/core/server/impl/ServerSessionImpl.java	2009-12-21 13:57:05 UTC (rev 8702)
+++ trunk/src/main/org/hornetq/core/server/impl/ServerSessionImpl.java	2009-12-22 11:14:43 UTC (rev 8703)
@@ -1321,30 +1321,17 @@
 
    public void handleClose(final Packet packet)
    {
-      Packet response = null;
-
-      try
+      storageManager.afterCompleteOperations(new IOAsyncTask()
       {
-         close();
-
-         response = new NullResponseMessage();
-      }
-      catch (Exception e)
-      {
-         ServerSessionImpl.log.error("Failed to close", e);
-
-         if (e instanceof HornetQException)
+         public void onError(int errorCode, String errorMessage)
          {
-            response = new HornetQExceptionMessage((HornetQException)e);
          }
-         else
+
+         public void done()
          {
-            response = new HornetQExceptionMessage(new HornetQException(HornetQException.INTERNAL_ERROR));
+            doClose(packet);
          }
-      }
-
-      sendResponse(packet, response, true, true);
-
+      });
    }
 
    public void handleCloseConsumer(final SessionConsumerCloseMessage packet)
@@ -1777,6 +1764,33 @@
       }
    }
 
+   private void doClose(final Packet packet)
+   {
+      Packet response = null;
+
+      try
+      {
+         close();
+
+         response = new NullResponseMessage();
+      }
+      catch (Exception e)
+      {
+         ServerSessionImpl.log.error("Failed to close", e);
+
+         if (e instanceof HornetQException)
+         {
+            response = new HornetQExceptionMessage((HornetQException)e);
+         }
+         else
+         {
+            response = new HornetQExceptionMessage(new HornetQException(HornetQException.INTERNAL_ERROR));
+         }
+      }
+
+      sendResponse(packet, response, true, true);
+   }
+   
    private void setStarted(final boolean s)
    {
       Set<ServerConsumer> consumersClone = new HashSet<ServerConsumer>(consumers.values());



More information about the hornetq-commits mailing list