[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/socket ...

Ron Sigal ron_sigal at yahoo.com
Sun Mar 11 16:49:12 EDT 2007


  User: rsigal  
  Date: 07/03/11 16:49:12

  Modified:    src/main/org/jboss/remoting/transport/socket  Tag:
                        remoting_2_x SocketServerInvoker.java
  Log:
  JBREM-654:  Updated previous fix to NPE problem.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.30.2.12 +24 -12    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.30.2.11
  retrieving revision 1.30.2.12
  diff -u -b -r1.30.2.11 -r1.30.2.12
  --- SocketServerInvoker.java	25 Feb 2007 20:39:09 -0000	1.30.2.11
  +++ SocketServerInvoker.java	11 Mar 2007 20:49:11 -0000	1.30.2.12
  @@ -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.30.2.11 $
  + * @version $Revision: 1.30.2.12 $
    * @jmx:mbean
    */
   public class SocketServerInvoker extends ServerInvoker implements Runnable, SocketServerInvokerMBean
  @@ -134,15 +134,19 @@
         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("leaving refreshServerSocket()");
  +      log.trace("leavinging refreshServerSocket()");
      }
   
      protected void setup() throws Exception
  @@ -530,17 +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)
                  {
  -                  if (serverSocket == null)
  -                  {
  -                     log.error("Cannot proceed without function server socket.  Shutting down");
  -                     stop();
  -                  }
                     log.error(this + " failed to handle socket", ex);
                  }
  +               else
  +               {
  +                  log.debug(this + " caught exception in run()", ex);     
  +               }
               }
            }
         }
  @@ -707,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