Mercurial > hg > icedtea8-forest > corba
changeset 1412:f85c4b0c0469 icedtea-3.2.0pre02
Merge jdk8u102-b14
author | andrew |
---|---|
date | Fri, 05 Aug 2016 05:27:01 +0100 |
parents | 8eb05dd032fe (current diff) 56b133772ec1 (diff) |
children | 459f130b3f85 |
files | .hgtags |
diffstat | 8 files changed, 156 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Thu Aug 04 22:38:30 2016 +0100 +++ b/.hgtags Fri Aug 05 05:27:01 2016 +0100 @@ -591,6 +591,10 @@ 4ea02753e66e348ee4639e157061bcbdef1d7ff3 jdk8u91-b13 f8d0cfaa9900ebda679fa9df8319fb753858f283 jdk8u91-b14 9f89788050d38ba4e19e24894eb8b3dd24c1a9d0 jdk8u91-b15 +7b719c1dec62535c34030cf3457abe6f478f13a0 jdk8u77-b00 +cafc1648f432eff2c392040af2db4505c3d290b6 jdk8u77-b01 +0f0077ee5e53365562ff77a01aa97d0c7374f447 jdk8u77-b02 +e8dc6eb11c761f20b44d8c4b8acb0846268872f1 jdk8u77-b03 7deeb4f70404e4f52306f9d0bcfc482fc5f16fb3 jdk8u76-b00 5786892e7c7d512ef9104a469ff7eafeaac12c38 jdk8u76-b01 239155e48af89968b62e695a3233d42bed1a3282 jdk8u76-b02 @@ -661,3 +665,19 @@ f8511bfb19c35d8d396dc53245c06cc3710657b1 jdk8u101-b12 7ea39ff8c227ada9e3cdb1560ff27128afb16f50 icedtea-3.1.0 48dbf4a68dc770ef17eee71a5bdfcb46a477157c icedtea-3.2.0pre01 +2bb2aec4b3e51aab96e9c25603c7c92fcbac46de jdk8u101-b13 +223d0e48a55b92255f5a613743a99e7deacaf455 jdk8u102-b00 +223d0e48a55b92255f5a613743a99e7deacaf455 jdk8u82-b00 +9d09a2f1395561fe71b1a83f53907ddc52e699d6 jdk8u102-b01 +564fbe28cbb0ff2e6f55623807ea816042de00ff jdk8u102-b02 +ab7dbd58a766fb01c6643f3a80c9e96ac1278a06 jdk8u102-b03 +626d8fa7a1bfd9e65b94117a526ba57b25ec3d14 jdk8u102-b04 +3c35b66b5345f615a3ff626111587c452c8c3893 jdk8u102-b05 +2a265ab91dd234348630dab92f622a616ab76a0e jdk8u102-b06 +8d44271dd11dd4bdc88ef647fd144e544791ecc4 jdk8u102-b07 +329501e6cc220884f005afc7cd330e227931fb21 jdk8u102-b08 +e108e30edcca932832e4e5edf1a15349d3be2fed jdk8u102-b09 +e0d70741f35cd16289de3fd6049834879725dae5 jdk8u102-b10 +360a2772486dd1aa818132222ea0b7fcfa5707ef jdk8u102-b11 +57546b5b575dec9ecfbb1e9a77d87c391a44ab96 jdk8u102-b12 +a7c292080d5ed76ea5e3b123c0dee4c340aa174f jdk8u102-b13
--- a/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryDynamicBase.java Thu Aug 04 22:38:30 2016 +0100 +++ b/src/share/classes/com/sun/corba/se/impl/presentation/rmi/StubFactoryDynamicBase.java Fri Aug 05 05:27:01 2016 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2013 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it
--- a/src/share/classes/com/sun/corba/se/impl/transport/CorbaInboundConnectionCacheImpl.java Thu Aug 04 22:38:30 2016 +0100 +++ b/src/share/classes/com/sun/corba/se/impl/transport/CorbaInboundConnectionCacheImpl.java Fri Aug 05 05:27:01 2016 +0100 @@ -54,11 +54,17 @@ { protected Collection connectionCache; + private Acceptor acceptor; + public CorbaInboundConnectionCacheImpl(ORB orb, Acceptor acceptor) { super(orb, acceptor.getConnectionCacheType(), ((CorbaAcceptor)acceptor).getMonitoringName()); this.connectionCache = new ArrayList(); + this.acceptor = acceptor; + if (orb.transportDebugFlag) { + dprint(": " + acceptor ); + } } //////////////////////////////////////////////////// @@ -66,11 +72,25 @@ // pept.transport.InboundConnectionCache // + public void close () { + + super.close(); + if (orb.transportDebugFlag) { + dprint(".close: " + acceptor ); + } + this.acceptor.close(); + + } + public Connection get(Acceptor acceptor) { throw wrapper.methodShouldNotBeCalled(); } + public Acceptor getAcceptor () { + return acceptor; + } + public void put(Acceptor acceptor, Connection connection) { if (orb.transportDebugFlag) {
--- a/src/share/classes/com/sun/corba/se/impl/transport/CorbaTransportManagerImpl.java Thu Aug 04 22:38:30 2016 +0100 +++ b/src/share/classes/com/sun/corba/se/impl/transport/CorbaTransportManagerImpl.java Fri Aug 05 05:27:01 2016 +0100 @@ -188,8 +188,9 @@ for (Object cc : outboundConnectionCaches.values()) { ((ConnectionCache)cc).close() ; } - for (Object cc : inboundConnectionCaches.values()) { - ((ConnectionCache)cc).close() ; + for (Object icc : inboundConnectionCaches.values()) { + ((ConnectionCache)icc).close() ; + unregisterAcceptor(((InboundConnectionCache)icc).getAcceptor()); } getSelector(0).close(); } finally {
--- a/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java Thu Aug 04 22:38:30 2016 +0100 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SelectorImpl.java Fri Aug 05 05:27:01 2016 +0100 @@ -26,16 +26,20 @@ package com.sun.corba.se.impl.transport; import java.io.IOException; +import java.net.ServerSocket; import java.nio.channels.ClosedChannelException; import java.nio.channels.SelectableChannel; +import java.nio.channels.ServerSocketChannel; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; +import java.nio.channels.ClosedSelectorException; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Iterator; import java.util.List; + import com.sun.corba.se.pept.broker.Broker; import com.sun.corba.se.pept.transport.Acceptor; import com.sun.corba.se.pept.transport.Connection; @@ -111,7 +115,16 @@ interestOpsList.add(keyAndOp); } // tell Selector Thread there's an update to a SelectorKey's Ops - selector.wakeup(); + try { + if (selector != null) { + // wakeup Selector thread to process close request + selector.wakeup(); + } + } catch (Throwable t) { + if (orb.transportDebugFlag) { + dprint(".registerInterestOps: selector.wakeup: ", t); + } + } } else { wrapper.selectionKeyInvalid(eventHandler.toString()); @@ -186,7 +199,9 @@ if (selectionKey != null) { selectionKey.cancel(); } - selector.wakeup(); + if (selector != null) { + selector.wakeup(); + } return; } @@ -239,6 +254,8 @@ readerThread.close(); } + clearDeferredRegistrations(); + // Selector try { @@ -248,7 +265,7 @@ } } catch (Throwable t) { if (orb.transportDebugFlag) { - dprint(".close: selector.close: " + t); + dprint(".close: selector.wakeup: ", t); } } } @@ -273,15 +290,16 @@ n = selector.select(timeout); } catch (IOException e) { if (orb.transportDebugFlag) { - dprint(".run: selector.select: " + e); + dprint(".run: selector.select: ", e); } + } catch (ClosedSelectorException csEx) { + if (orb.transportDebugFlag) { + dprint(".run: selector.select: ", csEx); + } + break; } if (closed) { - selector.close(); - if (orb.transportDebugFlag) { - dprint(".run: closed - .run return"); - } - return; + break; } /* if (timeout == 0 && orb.transportDebugFlag) { @@ -321,6 +339,18 @@ } } } + try { + if (selector != null) { + if (orb.transportDebugFlag) { + dprint(".run: selector.close "); + } + selector.close(); + } + } catch (Throwable t) { + if (orb.transportDebugFlag) { + dprint(".run: selector.close: ", t); + } + } } ///////////////////////////////////////////////////// @@ -328,6 +358,44 @@ // Implementation. // + private void clearDeferredRegistrations() { + synchronized (deferredRegistrations) { + int deferredListSize = deferredRegistrations.size(); + if (orb.transportDebugFlag) { + dprint(".clearDeferredRegistrations:deferred list size == " + deferredListSize); + } + for (int i = 0; i < deferredListSize; i++) { + EventHandler eventHandler = + (EventHandler)deferredRegistrations.get(i); + if (orb.transportDebugFlag) { + dprint(".clearDeferredRegistrations: " + eventHandler); + } + SelectableChannel channel = eventHandler.getChannel(); + SelectionKey selectionKey = null; + + try { + if (orb.transportDebugFlag) { + dprint(".clearDeferredRegistrations:close channel == " + + channel); + dprint(".clearDeferredRegistrations:close channel class == " + + channel.getClass().getName()); + } + channel.close(); + selectionKey = eventHandler.getSelectionKey(); + if (selectionKey != null) { + selectionKey.cancel(); + selectionKey.attach(null); + } + } catch (IOException ioEx) { + if (orb.transportDebugFlag) { + dprint(".clearDeferredRegistrations: ", ioEx); + } + } + } + deferredRegistrations.clear(); + } + } + private synchronized boolean isClosed () { return closed; @@ -344,7 +412,7 @@ selector = Selector.open(); } catch (IOException e) { if (orb.transportDebugFlag) { - dprint(".startSelector: Selector.open: IOException: " + e); + dprint(".startSelector: Selector.open: IOException: ", e); } // REVISIT - better handling/reporting RuntimeException rte = @@ -379,7 +447,7 @@ (Object)eventHandler); } catch (ClosedChannelException e) { if (orb.transportDebugFlag) { - dprint(".handleDeferredRegistrations: " + e); + dprint(".handleDeferredRegistrations: ", e); } } eventHandler.setSelectionKey(selectionKey);
--- a/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java Thu Aug 04 22:38:30 2016 +0100 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelAcceptorImpl.java Fri Aug 05 05:27:01 2016 +0100 @@ -264,7 +264,12 @@ if (connection.shouldRegisterServerReadEvent()) { Selector selector = orb.getTransportManager().getSelector(0); - selector.registerForEvent(connection.getEventHandler()); + if (selector != null) { + if (orb.transportDebugFlag) { + dprint(".accept: registerForEvent: " + connection); + } + selector.registerForEvent(connection.getEventHandler()); + } } getConnectionCache().reclaim(); @@ -273,12 +278,15 @@ if (orb.transportDebugFlag) { dprint(".accept:", e); } - orb.getTransportManager().getSelector(0).unregisterForEvent(this); - // REVISIT - need to close - recreate - then register new one. - orb.getTransportManager().getSelector(0).registerForEvent(this); - // NOTE: if register cycling we do not want to shut down ORB - // since local beans will still work. Instead one will see - // a growing log file to alert admin of problem. + Selector selector = orb.getTransportManager().getSelector(0); + if (selector != null) { + selector.unregisterForEvent(this); + // REVISIT - need to close - recreate - then register new one. + selector.registerForEvent(this); + // NOTE: if register cycling we do not want to shut down ORB + // since local beans will still work. Instead one will see + // a growing log file to alert admin of problem. + } } } @@ -289,7 +297,9 @@ dprint(".close->:"); } Selector selector = orb.getTransportManager().getSelector(0); - selector.unregisterForEvent(this); + if (selector != null) { + selector.unregisterForEvent(this); + } if (serverSocketChannel != null) { serverSocketChannel.close(); } @@ -480,7 +490,9 @@ // of calling SelectionKey.interestOps(<interest op>). Selector selector = orb.getTransportManager().getSelector(0); - selector.registerInterestOps(this); + if (selector != null) { + selector.registerInterestOps(this); + } if (orb.transportDebugFlag) { dprint(".doWork<-:" + this);
--- a/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java Thu Aug 04 22:38:30 2016 +0100 +++ b/src/share/classes/com/sun/corba/se/impl/transport/SocketOrChannelConnectionImpl.java Fri Aug 05 05:27:01 2016 +0100 @@ -367,7 +367,10 @@ } } // REVISIT - make sure reader thread is killed. - orb.getTransportManager().getSelector(0).unregisterForEvent(this); + Selector selector = orb.getTransportManager().getSelector(0); + if (selector != null) { + selector.unregisterForEvent(this); + } // Notify anyone waiting. purgeCalls(wrapper.connectionAbort(ex), true, false); // REVISIT @@ -801,7 +804,9 @@ } try { Selector selector = orb.getTransportManager().getSelector(0); - selector.unregisterForEvent(this); + if (selector != null) { + selector.unregisterForEvent(this); + } if (socketChannel != null) { socketChannel.close(); } @@ -824,7 +829,9 @@ dprint(".closeConnectionResources->: " + this); } Selector selector = orb.getTransportManager().getSelector(0); - selector.unregisterForEvent(this); + if (selector != null) { + selector.unregisterForEvent(this); + } try { if (socketChannel != null) socketChannel.close() ;
--- a/src/share/classes/com/sun/corba/se/pept/transport/InboundConnectionCache.java Thu Aug 04 22:38:30 2016 +0100 +++ b/src/share/classes/com/sun/corba/se/pept/transport/InboundConnectionCache.java Fri Aug 05 05:27:01 2016 +0100 @@ -36,6 +36,8 @@ public void put(Acceptor acceptor, Connection connection); public void remove(Connection connection); + + public Acceptor getAcceptor(); } // End of file.