Thu, 28 Apr 2016 09:48:54 -0700
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.