[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