Merge

Thu, 28 Apr 2016 09:48:54 -0700

author
asaha
date
Thu, 28 Apr 2016 09:48:54 -0700
changeset 1359
3eac78bf6732
parent 1358
2e13be3dc84c
parent 1324
889731f1c4fc
child 1360
d363179c431c

Merge

.hgtags file | annotate | diff | comparison | revisions
     1.1 --- a/.hgtags	Mon Apr 11 12:30:18 2016 -0700
     1.2 +++ b/.hgtags	Thu Apr 28 09:48:54 2016 -0700
     1.3 @@ -575,6 +575,10 @@
     1.4  cd7cec8fd295c0462a813b5f54dc5457c2bade2d jdk8u91-b00
     1.5  4ea02753e66e348ee4639e157061bcbdef1d7ff3 jdk8u91-b13
     1.6  f8d0cfaa9900ebda679fa9df8319fb753858f283 jdk8u91-b14
     1.7 +7b719c1dec62535c34030cf3457abe6f478f13a0 jdk8u77-b00
     1.8 +cafc1648f432eff2c392040af2db4505c3d290b6 jdk8u77-b01
     1.9 +0f0077ee5e53365562ff77a01aa97d0c7374f447 jdk8u77-b02
    1.10 +e8dc6eb11c761f20b44d8c4b8acb0846268872f1 jdk8u77-b03
    1.11  7deeb4f70404e4f52306f9d0bcfc482fc5f16fb3 jdk8u76-b00
    1.12  5786892e7c7d512ef9104a469ff7eafeaac12c38 jdk8u76-b01
    1.13  239155e48af89968b62e695a3233d42bed1a3282 jdk8u76-b02
    1.14 @@ -630,4 +634,13 @@
    1.15  8674aec1be6459f33451690fb106eec314964116 jdk8u101-b01
    1.16  96a43945cb6a69989294b511ecdfc0493ea09bf1 jdk8u101-b02
    1.17  371b0c5477d8613c06fd1206deed27759f18e42e jdk8u101-b03
    1.18 +52cca1ce8b473ecd751da2350d4b3ef111b5676e jdk8u101-b04
    1.19 +3edb6296456161d67bf33a73faf18dc57ef548de jdk8u101-b05
    1.20 +223d0e48a55b92255f5a613743a99e7deacaf455 jdk8u102-b00
    1.21 +223d0e48a55b92255f5a613743a99e7deacaf455 jdk8u82-b00
    1.22 +9d09a2f1395561fe71b1a83f53907ddc52e699d6 jdk8u102-b01
    1.23 +564fbe28cbb0ff2e6f55623807ea816042de00ff jdk8u102-b02
    1.24 +ab7dbd58a766fb01c6643f3a80c9e96ac1278a06 jdk8u102-b03
    1.25 +626d8fa7a1bfd9e65b94117a526ba57b25ec3d14 jdk8u102-b04
    1.26 +3c35b66b5345f615a3ff626111587c452c8c3893 jdk8u102-b05
    1.27  52cca1ce8b473ecd751da2350d4b3ef111b5676e jdk8u111-b00
     2.1 --- a/src/share/classes/com/sun/corba/se/impl/transport/CorbaInboundConnectionCacheImpl.java	Mon Apr 11 12:30:18 2016 -0700
     2.2 +++ b/src/share/classes/com/sun/corba/se/impl/transport/CorbaInboundConnectionCacheImpl.java	Thu Apr 28 09:48:54 2016 -0700
     2.3 @@ -54,11 +54,17 @@
     2.4  {
     2.5      protected Collection connectionCache;
     2.6  
     2.7 +    private Acceptor acceptor;
     2.8 +
     2.9      public CorbaInboundConnectionCacheImpl(ORB orb, Acceptor acceptor)
    2.10      {
    2.11          super(orb, acceptor.getConnectionCacheType(),
    2.12                ((CorbaAcceptor)acceptor).getMonitoringName());
    2.13          this.connectionCache = new ArrayList();
    2.14 +        this.acceptor = acceptor;
    2.15 +        if (orb.transportDebugFlag) {
    2.16 +            dprint(": " + acceptor );
    2.17 +        }
    2.18      }
    2.19  
    2.20      ////////////////////////////////////////////////////
    2.21 @@ -66,11 +72,25 @@
    2.22      // pept.transport.InboundConnectionCache
    2.23      //
    2.24  
    2.25 +    public void close () {
    2.26 +
    2.27 +        super.close();
    2.28 +        if (orb.transportDebugFlag) {
    2.29 +            dprint(".close: " + acceptor );
    2.30 +        }
    2.31 +        this.acceptor.close();
    2.32 +
    2.33 +    }
    2.34 +
    2.35      public Connection get(Acceptor acceptor)
    2.36      {
    2.37          throw wrapper.methodShouldNotBeCalled();
    2.38      }
    2.39  
    2.40 +    public Acceptor getAcceptor () {
    2.41 +        return acceptor;
    2.42 +    }
    2.43 +
    2.44      public void put(Acceptor acceptor, Connection connection)
    2.45      {
    2.46          if (orb.transportDebugFlag) {
     3.1 --- a/src/share/classes/com/sun/corba/se/impl/transport/CorbaTransportManagerImpl.java	Mon Apr 11 12:30:18 2016 -0700
     3.2 +++ b/src/share/classes/com/sun/corba/se/impl/transport/CorbaTransportManagerImpl.java	Thu Apr 28 09:48:54 2016 -0700
     3.3 @@ -188,8 +188,9 @@
     3.4              for (Object cc : outboundConnectionCaches.values()) {
     3.5                  ((ConnectionCache)cc).close() ;
     3.6              }
     3.7 -            for (Object cc : inboundConnectionCaches.values()) {
     3.8 -                ((ConnectionCache)cc).close() ;
     3.9 +            for (Object icc : inboundConnectionCaches.values()) {
    3.10 +                ((ConnectionCache)icc).close() ;
    3.11 +                unregisterAcceptor(((InboundConnectionCache)icc).getAcceptor());
    3.12              }
    3.13              getSelector(0).close();
    3.14          } finally {
     4.1 --- a/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java	Mon Apr 11 12:30:18 2016 -0700
     4.2 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java	Thu Apr 28 09:48:54 2016 -0700
     4.3 @@ -26,16 +26,20 @@
     4.4  package com.sun.corba.se.impl.transport;
     4.5  
     4.6  import java.io.IOException;
     4.7 +import java.net.ServerSocket;
     4.8  import java.nio.channels.ClosedChannelException;
     4.9  import java.nio.channels.SelectableChannel;
    4.10 +import java.nio.channels.ServerSocketChannel;
    4.11  import java.nio.channels.SelectionKey;
    4.12  import java.nio.channels.Selector;
    4.13 +import java.nio.channels.ClosedSelectorException;
    4.14  import java.util.ArrayList;
    4.15  import java.util.HashMap;
    4.16  import java.util.Map;
    4.17  import java.util.Iterator;
    4.18  import java.util.List;
    4.19  
    4.20 +
    4.21  import com.sun.corba.se.pept.broker.Broker;
    4.22  import com.sun.corba.se.pept.transport.Acceptor;
    4.23  import com.sun.corba.se.pept.transport.Connection;
    4.24 @@ -111,7 +115,16 @@
    4.25                  interestOpsList.add(keyAndOp);
    4.26              }
    4.27              // tell Selector Thread there's an update to a SelectorKey's Ops
    4.28 -            selector.wakeup();
    4.29 +            try {
    4.30 +                if (selector != null) {
    4.31 +                    // wakeup Selector thread to process close request
    4.32 +                    selector.wakeup();
    4.33 +                }
    4.34 +            } catch (Throwable t) {
    4.35 +                if (orb.transportDebugFlag) {
    4.36 +                    dprint(".registerInterestOps: selector.wakeup: ", t);
    4.37 +                }
    4.38 +            }
    4.39          }
    4.40          else {
    4.41              wrapper.selectionKeyInvalid(eventHandler.toString());
    4.42 @@ -186,7 +199,9 @@
    4.43              if (selectionKey != null) {
    4.44                  selectionKey.cancel();
    4.45              }
    4.46 -            selector.wakeup();
    4.47 +            if (selector != null) {
    4.48 +                selector.wakeup();
    4.49 +            }
    4.50              return;
    4.51          }
    4.52  
    4.53 @@ -239,6 +254,8 @@
    4.54              readerThread.close();
    4.55          }
    4.56  
    4.57 +       clearDeferredRegistrations();
    4.58 +
    4.59          // Selector
    4.60  
    4.61          try {
    4.62 @@ -248,7 +265,7 @@
    4.63              }
    4.64          } catch (Throwable t) {
    4.65              if (orb.transportDebugFlag) {
    4.66 -                dprint(".close: selector.close: " + t);
    4.67 +                dprint(".close: selector.wakeup: ", t);
    4.68              }
    4.69          }
    4.70      }
    4.71 @@ -273,15 +290,16 @@
    4.72                      n = selector.select(timeout);
    4.73                  } catch (IOException  e) {
    4.74                      if (orb.transportDebugFlag) {
    4.75 -                        dprint(".run: selector.select: " + e);
    4.76 +                        dprint(".run: selector.select: ", e);
    4.77                      }
    4.78 +                } catch (ClosedSelectorException csEx) {
    4.79 +                    if (orb.transportDebugFlag) {
    4.80 +                        dprint(".run: selector.select: ", csEx);
    4.81 +                    }
    4.82 +                    break;
    4.83                  }
    4.84                  if (closed) {
    4.85 -                    selector.close();
    4.86 -                    if (orb.transportDebugFlag) {
    4.87 -                        dprint(".run: closed - .run return");
    4.88 -                    }
    4.89 -                    return;
    4.90 +                    break;
    4.91                  }
    4.92                  /*
    4.93                    if (timeout == 0 && orb.transportDebugFlag) {
    4.94 @@ -321,6 +339,18 @@
    4.95                  }
    4.96              }
    4.97          }
    4.98 +        try {
    4.99 +            if (selector != null) {
   4.100 +                if (orb.transportDebugFlag) {
   4.101 +                    dprint(".run: selector.close ");
   4.102 +                }
   4.103 +                selector.close();
   4.104 +            }
   4.105 +        } catch (Throwable t) {
   4.106 +            if (orb.transportDebugFlag) {
   4.107 +                dprint(".run: selector.close: ", t);
   4.108 +            }
   4.109 +        }
   4.110      }
   4.111  
   4.112      /////////////////////////////////////////////////////
   4.113 @@ -328,6 +358,44 @@
   4.114      // Implementation.
   4.115      //
   4.116  
   4.117 +    private void clearDeferredRegistrations() {
   4.118 +        synchronized (deferredRegistrations) {
   4.119 +            int deferredListSize = deferredRegistrations.size();
   4.120 +            if (orb.transportDebugFlag) {
   4.121 +                dprint(".clearDeferredRegistrations:deferred list size == " + deferredListSize);
   4.122 +            }
   4.123 +            for (int i = 0; i < deferredListSize; i++) {
   4.124 +                EventHandler eventHandler =
   4.125 +                    (EventHandler)deferredRegistrations.get(i);
   4.126 +                if (orb.transportDebugFlag) {
   4.127 +                    dprint(".clearDeferredRegistrations: " + eventHandler);
   4.128 +                }
   4.129 +                SelectableChannel channel = eventHandler.getChannel();
   4.130 +                SelectionKey selectionKey = null;
   4.131 +
   4.132 +                try {
   4.133 +                    if (orb.transportDebugFlag) {
   4.134 +                        dprint(".clearDeferredRegistrations:close channel == "
   4.135 +                                + channel);
   4.136 +                        dprint(".clearDeferredRegistrations:close channel class == "
   4.137 +                                + channel.getClass().getName());
   4.138 +                    }
   4.139 +                    channel.close();
   4.140 +                    selectionKey = eventHandler.getSelectionKey();
   4.141 +                    if (selectionKey != null) {
   4.142 +                        selectionKey.cancel();
   4.143 +                        selectionKey.attach(null);
   4.144 +                    }
   4.145 +                } catch (IOException ioEx) {
   4.146 +                    if (orb.transportDebugFlag) {
   4.147 +                        dprint(".clearDeferredRegistrations: ", ioEx);
   4.148 +                    }
   4.149 +                }
   4.150 +            }
   4.151 +            deferredRegistrations.clear();
   4.152 +        }
   4.153 +    }
   4.154 +
   4.155      private synchronized boolean isClosed ()
   4.156      {
   4.157          return closed;
   4.158 @@ -344,7 +412,7 @@
   4.159              selector = Selector.open();
   4.160          } catch (IOException e) {
   4.161              if (orb.transportDebugFlag) {
   4.162 -                dprint(".startSelector: Selector.open: IOException: " + e);
   4.163 +                dprint(".startSelector: Selector.open: IOException: ", e);
   4.164              }
   4.165              // REVISIT - better handling/reporting
   4.166              RuntimeException rte =
   4.167 @@ -379,7 +447,7 @@
   4.168                                           (Object)eventHandler);
   4.169                  } catch (ClosedChannelException e) {
   4.170                      if (orb.transportDebugFlag) {
   4.171 -                        dprint(".handleDeferredRegistrations: " + e);
   4.172 +                        dprint(".handleDeferredRegistrations: ", e);
   4.173                      }
   4.174                  }
   4.175                  eventHandler.setSelectionKey(selectionKey);
     5.1 --- a/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java	Mon Apr 11 12:30:18 2016 -0700
     5.2 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java	Thu Apr 28 09:48:54 2016 -0700
     5.3 @@ -264,7 +264,12 @@
     5.4  
     5.5              if (connection.shouldRegisterServerReadEvent()) {
     5.6                  Selector selector = orb.getTransportManager().getSelector(0);
     5.7 -                selector.registerForEvent(connection.getEventHandler());
     5.8 +                if (selector != null) {
     5.9 +                    if (orb.transportDebugFlag) {
    5.10 +                        dprint(".accept: registerForEvent: " + connection);
    5.11 +                    }
    5.12 +                    selector.registerForEvent(connection.getEventHandler());
    5.13 +                }
    5.14              }
    5.15  
    5.16              getConnectionCache().reclaim();
    5.17 @@ -273,12 +278,15 @@
    5.18              if (orb.transportDebugFlag) {
    5.19                  dprint(".accept:", e);
    5.20              }
    5.21 -            orb.getTransportManager().getSelector(0).unregisterForEvent(this);
    5.22 -            // REVISIT - need to close - recreate - then register new one.
    5.23 -            orb.getTransportManager().getSelector(0).registerForEvent(this);
    5.24 -            // NOTE: if register cycling we do not want to shut down ORB
    5.25 -            // since local beans will still work.  Instead one will see
    5.26 -            // a growing log file to alert admin of problem.
    5.27 +            Selector selector = orb.getTransportManager().getSelector(0);
    5.28 +            if (selector != null) {
    5.29 +                selector.unregisterForEvent(this);
    5.30 +                // REVISIT - need to close - recreate - then register new one.
    5.31 +                selector.registerForEvent(this);
    5.32 +                // NOTE: if register cycling we do not want to shut down ORB
    5.33 +                // since local beans will still work.  Instead one will see
    5.34 +                // a growing log file to alert admin of problem.
    5.35 +            }
    5.36          }
    5.37      }
    5.38  
    5.39 @@ -289,7 +297,9 @@
    5.40                  dprint(".close->:");
    5.41              }
    5.42              Selector selector = orb.getTransportManager().getSelector(0);
    5.43 -            selector.unregisterForEvent(this);
    5.44 +            if (selector != null) {
    5.45 +                selector.unregisterForEvent(this);
    5.46 +            }
    5.47              if (serverSocketChannel != null) {
    5.48                  serverSocketChannel.close();
    5.49              }
    5.50 @@ -480,7 +490,9 @@
    5.51              // of calling SelectionKey.interestOps(<interest op>).
    5.52  
    5.53              Selector selector = orb.getTransportManager().getSelector(0);
    5.54 -            selector.registerInterestOps(this);
    5.55 +            if (selector != null) {
    5.56 +                selector.registerInterestOps(this);
    5.57 +            }
    5.58  
    5.59              if (orb.transportDebugFlag) {
    5.60                  dprint(".doWork<-:" + this);
     6.1 --- a/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java	Mon Apr 11 12:30:18 2016 -0700
     6.2 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java	Thu Apr 28 09:48:54 2016 -0700
     6.3 @@ -367,7 +367,10 @@
     6.4                  }
     6.5              }
     6.6              // REVISIT - make sure reader thread is killed.
     6.7 -            orb.getTransportManager().getSelector(0).unregisterForEvent(this);
     6.8 +            Selector selector = orb.getTransportManager().getSelector(0);
     6.9 +            if (selector != null) {
    6.10 +                selector.unregisterForEvent(this);
    6.11 +            }
    6.12              // Notify anyone waiting.
    6.13              purgeCalls(wrapper.connectionAbort(ex), true, false);
    6.14              // REVISIT
    6.15 @@ -801,7 +804,9 @@
    6.16              }
    6.17              try {
    6.18                  Selector selector = orb.getTransportManager().getSelector(0);
    6.19 -                selector.unregisterForEvent(this);
    6.20 +                if (selector != null) {
    6.21 +                    selector.unregisterForEvent(this);
    6.22 +                }
    6.23                  if (socketChannel != null) {
    6.24                      socketChannel.close();
    6.25                  }
    6.26 @@ -824,7 +829,9 @@
    6.27                 dprint(".closeConnectionResources->: " + this);
    6.28             }
    6.29             Selector selector = orb.getTransportManager().getSelector(0);
    6.30 -           selector.unregisterForEvent(this);
    6.31 +           if (selector != null) {
    6.32 +               selector.unregisterForEvent(this);
    6.33 +           }
    6.34             try {
    6.35               if (socketChannel != null)
    6.36                socketChannel.close() ;
     7.1 --- a/src/share/classes/com/sun/corba/se/pept/transport/InboundConnectionCache.java	Mon Apr 11 12:30:18 2016 -0700
     7.2 +++ b/src/share/classes/com/sun/corba/se/pept/transport/InboundConnectionCache.java	Thu Apr 28 09:48:54 2016 -0700
     7.3 @@ -36,6 +36,8 @@
     7.4      public void put(Acceptor acceptor, Connection connection);
     7.5  
     7.6      public void remove(Connection connection);
     7.7 +
     7.8 +    public Acceptor getAcceptor();
     7.9  }
    7.10  
    7.11  // End of file.

mercurial