[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/socket ...
Ron Sigal
ron_sigal at yahoo.com
Sun Mar 11 16:50:03 EDT 2007
User: rsigal
Date: 07/03/11 16:50:03
Modified: src/main/org/jboss/remoting/transport/socket
SocketServerInvoker.java
Log:
JBREM-654: Updated previous fix to NPE problem.
Revision Changes Path
1.37 +23 -6 JBossRemoting/src/main/org/jboss/remoting/transport/socket/SocketServerInvoker.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SocketServerInvoker.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transport/socket/SocketServerInvoker.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -b -r1.36 -r1.37
--- SocketServerInvoker.java 25 Feb 2007 05:14:53 -0000 1.36
+++ SocketServerInvoker.java 11 Mar 2007 20:50:03 -0000 1.37
@@ -49,7 +49,7 @@
* @author <a href="mailto:tom.elrod at jboss.com">Tom Elrod</a>
* @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
*
- * @version $Revision: 1.36 $
+ * @version $Revision: 1.37 $
* @jmx:mbean
*/
public class SocketServerInvoker extends ServerInvoker implements Runnable, SocketServerInvokerMBean
@@ -134,12 +134,16 @@
log.trace("entering refreshServerSocket()");
synchronized (serverSocketFactoryLock)
{
+ // If release() is able to enter its synchronized block and sees
+ // serverSocket == null, then it knows that something went wrong.
newServerSocketFactory=false;
- serverSocket.close();
+ ServerSocket oldServerSocket = serverSocket;
serverSocket = null;
+ oldServerSocket.close();
InetAddress bindAddress = InetAddress.getByName(getServerBindAddress());
- serverSocket = createServerSocket(getServerBindPort(), backlog, bindAddress);
- serverSocket.setReuseAddress(reuseAddress);
+ ServerSocket newServerSocket = createServerSocket(getServerBindPort(), backlog, bindAddress);
+ newServerSocket.setReuseAddress(reuseAddress);
+ serverSocket = newServerSocket;
log.info("ServerSocket has been updated");
}
log.trace("leavinging refreshServerSocket()");
@@ -530,12 +534,21 @@
log.error("SSLServerSocket error", e);
return;
}
+ catch (InvalidStateException e)
+ {
+ log.error("Cannot proceed without functioning server socket. Shutting down");
+ stop();
+ }
catch(Throwable ex)
{
if(running)
{
log.error(this + " failed to handle socket", ex);
}
+ else
+ {
+ log.debug(this + " caught exception in run()", ex);
+ }
}
}
}
@@ -702,10 +715,14 @@
/**
* Let SocketServerInvoker.run() resume when refresh is completed
*/
- public void release()
+ public void release() throws InvalidStateException
{
synchronized (serverSocketFactoryLock)
{
+ if (serverSocket == null)
+ {
+ throw new InvalidStateException("error refreshing ServerSocket");
+ }
log.trace("passed through ServerSocketRefresh.release()");
}
}
More information about the jboss-cvs-commits
mailing list