[jboss-cvs] JBossAS SVN: r81752 - branches/JBoss_4_0_4_GA_CP/messaging/src/main/org/jboss/mq/il/uil2.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Nov 28 01:49:14 EST 2008
Author: bershath27
Date: 2008-11-28 01:49:14 -0500 (Fri, 28 Nov 2008)
New Revision: 81752
Modified:
branches/JBoss_4_0_4_GA_CP/messaging/src/main/org/jboss/mq/il/uil2/SocketManager.java
Log:
Applied https://jira.jboss.org/jira/browse/ASPATCH-400
Modified: branches/JBoss_4_0_4_GA_CP/messaging/src/main/org/jboss/mq/il/uil2/SocketManager.java
===================================================================
--- branches/JBoss_4_0_4_GA_CP/messaging/src/main/org/jboss/mq/il/uil2/SocketManager.java 2008-11-28 03:40:30 UTC (rev 81751)
+++ branches/JBoss_4_0_4_GA_CP/messaging/src/main/org/jboss/mq/il/uil2/SocketManager.java 2008-11-28 06:49:14 UTC (rev 81752)
@@ -142,9 +142,24 @@
writeState = STARTED;
running.set(true);
}
-
- readThread.start();
- writeThread.start();
+ try
+ {
+ readThread.start();
+ writeThread.start();
+ }
+ catch (Throwable t)
+ {
+ try
+ {
+ stop();
+ }
+ catch (Throwable ignored)
+ {
+ }
+
+ log.warn("Error starting socket manager threads", t);
+ }
+
}
/** Stop the read and write threads by interrupting them.
@@ -153,7 +168,9 @@
{
synchronized (running)
{
- if (readState == STARTED)
+ if (trace)
+ log.trace("stop() " + readThread + " " + writeThread);
+ if (readState == STARTED)
{
readState = STOPPING;
readThread.interrupt();
@@ -169,6 +186,13 @@
pool.shutdownNow();
pool = null;
}
+ try
+ {
+ socket.close();
+ }
+ catch (Throwable ignored)
+ {
+ }
}
}
@@ -297,7 +321,7 @@
public void run()
{
int msgType = 0;
- log.debug("Begin ReadTask.run");
+ log.debug("Begin ReadTask.run " + Thread.currentThread());
try
{
bufferedInput = new NotifyingBufferedInputStream(socket.getInputStream(), bufferSize, chunkSize, handler);
@@ -383,7 +407,7 @@
break;
}
}
- log.debug("End ReadTask.run");
+ log.debug("End ReadTask.run " + Thread.currentThread());
}
/**
@@ -397,7 +421,7 @@
}
catch (Throwable e)
{
- if (e instanceof JMSException)
+ if (e instanceof JMSException || running.get() == false)
log.trace("Failed to handle: " + msg.toString(), e);
else if (e instanceof RuntimeException || e instanceof Error)
log.error("Failed to handle: " + msg.toString(), e);
@@ -410,7 +434,10 @@
}
catch (Exception ie)
{
- log.debug("Failed to send error reply", ie);
+ if (running.get())
+ log.debug("Failed to send error reply", ie);
+ else
+ log.trace("Failed to send error reply", ie);
}
}
}
@@ -497,7 +524,7 @@
{
public void run()
{
- log.debug("Begin WriteTask.run");
+ log.debug("Begin WriteTask.run " + Thread.currentThread());
try
{
bufferedOutput =
@@ -514,9 +541,17 @@
while (true)
{
BaseMsg msg = null;
+
+ synchronized (running)
+ {
+ if (writeState != STARTED)
+ break;
+ }
try
{
- msg = (BaseMsg) sendQueue.take();
+ msg = (BaseMsg) sendQueue.poll(10000l);
+ if (msg == null)
+ continue; // Check for stop if no message for 10 seconds
if (trace)
log.trace("Write msg: " + msg);
msg.write(out);
@@ -539,7 +574,7 @@
break;
}
}
- log.debug("End WriteTask.run");
+ log.debug("End WriteTask.run " + Thread.currentThread());
}
/**
More information about the jboss-cvs-commits
mailing list