Re: [VOTE] Release Apache Tomcat 8.0.17
Mark, On 9.1.2015 19:26, Mark Thomas wrote: The proposed Apache Tomcat 8.0.17 release is now available for voting. ... The proposed 8.0.17 release is: [ ] Broken - do not release [x] Stable - go ahead and release as 8.0.17 Tested .zip distribution on Windows 7 64-bit and Oracle JDK 1.7.0_67: - Tested TLS/SSL connectivity for BIO, NIO and APR connectors. - Crawled all links (except /manager, /host-manager and /examples/async*). No broken links found, except links to JavaDocs. - Smoke tests of BIO, NIO and APR, with and without TLS, all passed. - Tested with several webapps that are in active development. -Ognjen - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1651999 - /tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
Author: markt Date: Thu Jan 15 09:20:48 2015 New Revision: 1651999 URL: http://svn.apache.org/r1651999 Log: Add a TODO Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1651999&r1=1651998&r2=1651999&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Thu Jan 15 09:20:48 2015 @@ -2404,6 +2404,8 @@ public class AprEndpoint extends Abstrac @Override public int read(boolean block, byte[] b, int off, int len) throws IOException { +// TODO: Restore a socket level input buffer to align with NIO and +// NIO2. if (closed) { throw new IOException(sm.getString("socket.apr.closed", getSocket())); } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1651998 - in /tomcat/trunk/java/org/apache/coyote/http11: AbstractInputBuffer.java InternalAprInputBuffer.java InternalNio2InputBuffer.java InternalNioInputBuffer.java
Author: markt Date: Thu Jan 15 09:20:42 2015 New Revision: 1651998 URL: http://svn.apache.org/r1651998 Log: Revert the parallel ByteBuffer idea Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java?rev=1651998&r1=1651997&r2=1651998&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java Thu Jan 15 09:20:42 2015 @@ -118,26 +118,10 @@ public abstract class AbstractInputBuffe /** - * The read buffer represented as a byte[]. - * - * SocketWrapper uses ByteBuffer (since reading from socket to ByteBuffer is - * the only API common to all current I/O implementations) but this class - * uses byte[] since that is more efficient for parsing. readByteBuffer - * therefore wraps buf. The byte[] representation is only used for reading. - * The ByteBuffer representation is only used for writing. + * The read buffer. */ protected byte[] buf; -/** - * The read buffer represented as a ByteBuffer. - * - * SocketWrapper uses ByteBuffer (since reading from socket to ByteBuffer is - * the only API common to all current I/O implementations) but this class - * uses byte[] since that is more efficient for parsing. readByteBuffer - * therefore wraps buf. The byte[] representation is only used for reading. - * The ByteBuffer representation is only used for writing. - */ -protected ByteBuffer readByteBuffer; /** * Last valid byte. @@ -387,7 +371,6 @@ public abstract class AbstractInputBuffe // Reset pointers lastValid = lastValid - pos; -readByteBuffer.position(lastValid); pos = 0; lastActiveFilter = -1; parsingHeader = true; @@ -648,8 +631,6 @@ public abstract class AbstractInputBuffe byte[] tmp = new byte[newsize]; System.arraycopy(buf,0,tmp,0,buf.length); buf = tmp; -readByteBuffer = ByteBuffer.wrap(buf); -readByteBuffer.position(lastValid); } } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1651998&r1=1651997&r2=1651998&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Thu Jan 15 09:20:42 2015 @@ -17,7 +17,6 @@ package org.apache.coyote.http11; import java.io.IOException; -import java.nio.ByteBuffer; import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; @@ -85,7 +84,6 @@ public class InternalAprInputBuffer exte int bufLength = Math.max(headerBufferSize, 8192); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; -readByteBuffer = ByteBuffer.wrap(buf); } } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java?rev=1651998&r1=1651997&r2=1651998&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java Thu Jan 15 09:20:42 2015 @@ -146,7 +146,6 @@ public class InternalNio2InputBuffer ext int bufLength = headerBufferSize + socketReadBufferSize; if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; -readByteBuffer = ByteBuffer.wrap(buf); } // Initialize the completion handler Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1651998&r1=1651997&r2=1651998&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Thu Jan 15 09:20:42 2015 @@ -98,7 +98,6 @@ public class InternalNioInputBuffer exte
svn commit: r1652000 - in /tomcat/trunk/java/org/apache/coyote/http11: InternalAprInputBuffer.java InternalNioInputBuffer.java
Author: markt Date: Thu Jan 15 09:20:53 2015 New Revision: 1652000 URL: http://svn.apache.org/r1652000 Log: APR: - Simplify. - Correct test for exceeded the max header size. NIO - Use read method from SocketWrapper Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1652000&r1=1651999&r2=1652000&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Thu Jan 15 09:20:53 2015 @@ -91,10 +91,8 @@ public class InternalAprInputBuffer exte @Override protected boolean fill(boolean block) throws IOException { -int nRead = 0; - if (parsingHeader) { -if (lastValid == buf.length) { +if (lastValid > headerBufferSize) { throw new IllegalArgumentException (sm.getString("iib.requestheadertoolarge.error")); } @@ -102,7 +100,7 @@ public class InternalAprInputBuffer exte lastValid = pos = end; } -nRead = wrapper.read(block, buf, pos, buf.length - pos); +int nRead = wrapper.read(block, buf, pos, buf.length - pos); if (nRead > 0) { lastValid = pos + nRead; return true; Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1652000&r1=1651999&r2=1652000&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Thu Jan 15 09:20:53 2015 @@ -18,8 +18,6 @@ package org.apache.coyote.http11; import java.io.EOFException; import java.io.IOException; -import java.nio.ByteBuffer; -import java.nio.channels.Selector; import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; @@ -28,8 +26,6 @@ import org.apache.juli.logging.LogFactor import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.NioChannel; -import org.apache.tomcat.util.net.NioEndpoint; -import org.apache.tomcat.util.net.NioSelectorPool; import org.apache.tomcat.util.net.SocketWrapperBase; /** @@ -41,8 +37,8 @@ public class InternalNioInputBuffer exte private static final Log log = LogFactory.getLog(InternalNioInputBuffer.class); -// --- Constructors +// --- Constructors /** * Alternate constructor. @@ -52,15 +48,10 @@ public class InternalNioInputBuffer exte inputStreamInputBuffer = new SocketInputBuffer(); } -/** - * Underlying socket. - */ -private NioChannel socket; -/** - * Selector pool, for blocking reads and blocking writes - */ -private NioSelectorPool pool; +// - Instance Variables + +private SocketWrapperBase wrapper; // - Public Methods @@ -71,8 +62,8 @@ public class InternalNioInputBuffer exte */ @Override public void recycle() { +wrapper = null; super.recycle(); -socket = null; } // -- Protected Methods @@ -87,25 +78,18 @@ public class InternalNioInputBuffer exte protected void init(SocketWrapperBase socketWrapper, AbstractEndpoint endpoint) throws IOException { -socket = socketWrapper.getSocket(); -if (socket == null) { -// Socket has been closed in another thread -throw new IOException(sm.getString("iib.socketClosed")); -} -socketReadBufferSize = -socket.getBufHandler().getReadBuffer().capacity(); +wrapper = socketWrapper; -int bufLength = headerBufferSize + socketReadBufferSize; +int bufLength = Math.max(headerBufferSize, 8192); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; } - -pool = ((NioEndpoint)endpoint).getSelectorPool(); } @Override protected boolean fill(boolean block) throws IOException, EOFException { + if (parsingHeader) { if (lastValid > headerBufferSize) { throw new IllegalArgumentException @@ -114
svn commit: r1652001 - /tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java
Author: markt Date: Thu Jan 15 09:21:00 2015 New Revision: 1652001 URL: http://svn.apache.org/r1652001 Log: Remove unused code. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java?rev=1652001&r1=1652000&r2=1652001&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java Thu Jan 15 09:21:00 2015 @@ -54,7 +54,6 @@ public class SecureNioChannel extends Ni ApplicationBufferHandler bufHandler, NioSelectorPool pool) throws IOException { super(channel,bufHandler); this.sslEngine = engine; -int appBufSize = sslEngine.getSession().getApplicationBufferSize(); int netBufSize = sslEngine.getSession().getPacketBufferSize(); //allocate network buffers - TODO, add in optional direct non-direct buffers if ( netInBuffer == null ) netInBuffer = ByteBuffer.allocateDirect(netBufSize); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652002 - in /tomcat/trunk/java/org/apache: coyote/http11/ tomcat/util/net/
Author: markt Date: Thu Jan 15 09:21:08 2015 New Revision: 1652002 URL: http://svn.apache.org/r1652002 Log: NIO reafctoring - Use read from socketWrapper rather than HttpNio2InputBuffer - Various API tweaks to support the above Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java?rev=1652002&r1=1652001&r2=1652002&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java Thu Jan 15 09:21:08 2015 @@ -85,7 +85,7 @@ public class Http11Nio2Processor extends @Override public SocketState asyncDispatch(SocketStatus status) { SocketState state = super.asyncDispatch(status); -if (state == SocketState.OPEN && ((InternalNio2InputBuffer) getInputBuffer()).isPending()) { +if (state == SocketState.OPEN && socketWrapper.isReadPending()) { // Following async processing, a read is still pending, so // keep the processor associated return SocketState.LONG; @@ -97,7 +97,7 @@ public class Http11Nio2Processor extends @Override protected void registerForEvent(boolean read, boolean write) { if (read) { -((InternalNio2InputBuffer) getInputBuffer()).registerReadInterest(); +socketWrapper.registerReadInterest(); } if (write) { socketWrapper.registerWriteInterest(); Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1652002&r1=1652001&r2=1652002&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Thu Jan 15 09:21:08 2015 @@ -37,12 +37,9 @@ public class InternalAprInputBuffer exte private static final Log log = LogFactory.getLog(InternalAprInputBuffer.class); -// --- Constructors +// --- Constructors -/** - * Alternate constructor. - */ public InternalAprInputBuffer(Request request, int headerBufferSize) { super(request, headerBufferSize); inputStreamInputBuffer = new SocketInputBuffer(); @@ -81,7 +78,7 @@ public class InternalAprInputBuffer exte wrapper = socketWrapper; -int bufLength = Math.max(headerBufferSize, 8192); +int bufLength = Math.max(headerBufferSize * 2, 8192); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; } @@ -116,9 +113,7 @@ public class InternalAprInputBuffer exte * This class is an input buffer which will read its data from an input * stream. */ -protected class SocketInputBuffer -implements InputBuffer { - +protected class SocketInputBuffer implements InputBuffer { /** * Read bytes into the specified chunk. @@ -136,7 +131,7 @@ public class InternalAprInputBuffer exte chunk.setBytes(buf, pos, length); pos = lastValid; -return (length); +return length; } } } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java?rev=1652002&r1=1652001&r2=1652002&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java Thu Jan 15 09:21:08 2015 @@ -18,14 +18,6 @@ package org.apache.coyote.http11; import java.io.EOFException; import java.io.IOException; -import java.net.SocketTimeoutException; -import java.nio.ByteBuffer; -import java.nio.channels.CompletionHandler; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.u
svn commit: r1652005 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Author: markt Date: Thu Jan 15 09:21:29 2015 New Revision: 1652005 URL: http://svn.apache.org/r1652005 Log: This fixes a unit test failure but I'm not (yet) completely happy that the fix is correct. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652005&r1=1652004&r2=1652005&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 09:21:29 2015 @@ -735,6 +735,25 @@ public class Nio2Endpoint extends Abstra private boolean writeInterest = true; // Guarded by writeCompletionHandler private boolean writeNotify = false; +private CompletionHandler> awaitBytes += new CompletionHandler>() { + +@Override +public synchronized void completed(Integer nBytes, SocketWrapperBase attachment) { +if (nBytes.intValue() < 0) { +failed(new ClosedChannelException(), attachment); +return; +} +getEndpoint().processSocket(attachment, SocketStatus.OPEN_READ, true); +} + +@Override +public void failed(Throwable exc, SocketWrapperBase attachment) { +getEndpoint().processSocket(attachment, SocketStatus.DISCONNECT, true); +} +}; + + public Nio2SocketWrapper(Nio2Channel channel, Nio2Endpoint endpoint) { super(channel, endpoint); @@ -1272,6 +1291,19 @@ public class Nio2Endpoint extends Abstra public void regsiterForEvent(boolean read, boolean write) { // NO-OP. Appropriate handlers will already have been registered. } + + +public void awaitBytes() { +if (getSocket() == null) { +return; +} +if (readPending.tryAcquire()) { +getSocket().getBufHandler().configureReadBufferForWrite(); +getSocket().read(getSocket().getBufHandler().getReadBuffer(), +getTimeout(), TimeUnit.MILLISECONDS, this, awaitBytes); +readPending.release(); +} +} } @@ -1289,27 +1321,6 @@ public class Nio2Endpoint extends Abstra public void onCreateSSLEngine(SSLEngine engine); } -/** - * The completion handler used for asynchronous read operations - */ -private CompletionHandler> awaitBytes -= new CompletionHandler>() { - -@Override -public synchronized void completed(Integer nBytes, SocketWrapperBase attachment) { -if (nBytes.intValue() < 0) { -failed(new ClosedChannelException(), attachment); -return; -} -processSocket0(attachment, SocketStatus.OPEN_READ, true); -} - -@Override -public void failed(Throwable exc, SocketWrapperBase attachment) { -processSocket0(attachment, SocketStatus.DISCONNECT, true); -} -}; - public void addTimeout(SocketWrapperBase socket) { waitingRequests.add(socket); } @@ -1336,12 +1347,10 @@ public class Nio2Endpoint extends Abstra } public void awaitBytes(SocketWrapperBase socket) { -if (socket == null || socket.getSocket() == null) { +if (socket == null) { return; } -socket.getSocket().getBufHandler().configureReadBufferForWrite(); - socket.getSocket().read(socket.getSocket().getBufHandler().getReadBuffer(), -socket.getTimeout(), TimeUnit.MILLISECONDS, socket, awaitBytes); +((Nio2SocketWrapper) socket).awaitBytes(); } public enum SendfileState { - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652004 - in /tomcat/trunk/java/org/apache: coyote/http11/ tomcat/util/net/
Author: markt Date: Thu Jan 15 09:21:24 2015 New Revision: 1652004 URL: http://svn.apache.org/r1652004 Log: Fix first set of issues found with NIO2 and new SocketBufferHandler Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/NioChannel.java tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java?rev=1652004&r1=1652003&r2=1652004&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java Thu Jan 15 09:21:24 2015 @@ -118,8 +118,7 @@ public class InternalNio2InputBuffer ext * Read bytes into the specified chunk. */ @Override -public int doRead(ByteChunk chunk, Request req ) -throws IOException { +public int doRead(ByteChunk chunk, Request req ) throws IOException { if (pos >= lastValid) { if (!fill(true)) //read body, must be blocking, as the thread is inside the app Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java?rev=1652004&r1=1652003&r2=1652004&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java Thu Jan 15 09:21:24 2015 @@ -52,21 +52,13 @@ public class Nio2Channel implements Asyn throws IOException { this.sc = channel; this.socket = socket; -bufHandler.getReadBuffer().clear(); -bufHandler.getWriteBuffer().clear(); +bufHandler.reset(); } public SocketWrapperBase getSocket() { return socket; } -public int getBufferSize() { -if ( bufHandler == null ) return 0; -int size = 0; -size += bufHandler.getReadBuffer()!=null?bufHandler.getReadBuffer().capacity():0; -size += bufHandler.getWriteBuffer()!=null?bufHandler.getWriteBuffer().capacity():0; -return size; -} /** * Closes this channel. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652004&r1=1652003&r2=1652004&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 09:21:24 2015 @@ -726,8 +726,7 @@ public class Nio2Endpoint extends Abstra private boolean upgradeInit = false; private final CompletionHandler> readCompletionHandler; -private boolean flipped = false; -private volatile boolean readPending = false; +private final Semaphore readPending = new Semaphore(1); private volatile boolean readInterest = true; private final CompletionHandler writeCompletionHandler; @@ -751,7 +750,7 @@ public class Nio2Endpoint extends Abstra if (nBytes.intValue() < 0) { failed(new EOFException(), attachment); } else { -readPending = false; +readPending.release(); if (readInterest && !Nio2Endpoint.isInline()) { readInterest = false; notify = true; @@ -771,7 +770,7 @@ public class Nio2Endpoint extends Abstra ioe = new IOException(exc); } Nio2SocketWrapper.this.setError(ioe); -readPending = false; +readPending.release(); if (exc instanceof AsynchronousCloseException) { // If already closed, don't call onError and close again return; @@ -947,30 +946,21 @@ public class Nio2Endpoint extends Abstra @Override public boolean isReady() throws IOException { synchronized (readCompletionHandler) { -if (readPending) { +if (!readPending.tryAcquire()) { readIn
svn commit: r1652003 - in /tomcat/trunk/java/org/apache: coyote/http11/ tomcat/util/net/
Author: markt Date: Thu Jan 15 09:21:17 2015 New Revision: 1652003 URL: http://svn.apache.org/r1652003 Log: InputBuffer refactoring. All compiles but not yet tested. Added: tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java (with props) Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/NioChannel.java tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java tomcat/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1652003&r1=1652002&r2=1652003&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Thu Jan 15 09:21:17 2015 @@ -80,7 +80,8 @@ public class InternalNioInputBuffer exte wrapper = socketWrapper; -int bufLength = headerBufferSize + wrapper.getSocket().getBufHandler().getReadBuffer().capacity(); +int bufLength = headerBufferSize + +wrapper.getSocket().getBufHandler().getReadBuffer().capacity(); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1652003&r1=1652002&r2=1652003&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Thu Jan 15 09:21:17 2015 @@ -2387,7 +2387,13 @@ public class AprEndpoint extends Abstrac sslOutputBuffer = null; } -socketWriteBuffer = ByteBuffer.allocateDirect(6 * 1500); +socketBufferHandler = new SocketBufferHandler(6 * 1500, 6 * 1500, true); +} + + +@Override +protected void resetSocketBufferHandler(Long socket) { +socketBufferHandler.reset(); } @@ -2571,19 +2577,16 @@ public class AprEndpoint extends Abstrac private void doWriteInternal() throws IOException { -if (!writeBufferFlipped) { -socketWriteBuffer.flip(); -writeBufferFlipped = true; -} - int thisTime; +ByteBuffer socketWriteBuffer = socketBufferHandler.getWriteBuffer(); do { thisTime = 0; if (getEndpoint().isSSLEnabled()) { if (sslOutputBuffer.remaining() == 0) { // Buffer was fully written last time around sslOutputBuffer.clear(); +socketBufferHandler.configureWriteBufferForRead(); transfer(socketWriteBuffer, sslOutputBuffer); sslOutputBuffer.flip(); } else { @@ -2598,9 +2601,9 @@ public class AprEndpoint extends Abstrac sslOutputBuffer.position() + sslWritten); } } else { -thisTime = Socket.sendb(getSocket().longValue(), -socketWriteBuffer, socketWriteBuffer.position(), -socketWriteBuffer.limit() - socketWriteBuffer.position()); +socketBufferHandler.configureWriteBufferForRead(); +thisTime = Socket.sendb(getSocket().longValue(), socketWriteBuffer, +socketWriteBuffer.position(), socketWriteBuffer.remaining()); } if (Status.APR_STATUS_IS_EAGAIN(-thisTime)) { thisTime = 0; @@ -2617,10 +2620,6 @@ public class AprEndpoint extends Abstrac socketWriteBuffer.position(socketWriteBuffer.position() + thisTime); } while ((thisTime > 0 || getBlockingStatus()) && socketWriteBuffer.hasRemaining()); -if (socketWriteBuffer.remaining() == 0) { -socketWriteBuffer.clear(); -writeBufferFlipped = false; -} // If there is data left in the buffer the socket will be registered for // write further up the stack. This is to ensure the socket is only
svn commit: r1652006 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Author: markt Date: Thu Jan 15 09:21:35 2015 New Revision: 1652006 URL: http://svn.apache.org/r1652006 Log: Trivial - rename - add a TODO Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652006&r1=1652005&r2=1652006&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 09:21:35 2015 @@ -735,7 +735,7 @@ public class Nio2Endpoint extends Abstra private boolean writeInterest = true; // Guarded by writeCompletionHandler private boolean writeNotify = false; -private CompletionHandler> awaitBytes +private CompletionHandler> awaitBytesHandler = new CompletionHandler>() { @Override @@ -1300,7 +1300,9 @@ public class Nio2Endpoint extends Abstra if (readPending.tryAcquire()) { getSocket().getBufHandler().configureReadBufferForWrite(); getSocket().read(getSocket().getBufHandler().getReadBuffer(), -getTimeout(), TimeUnit.MILLISECONDS, this, awaitBytes); +getTimeout(), TimeUnit.MILLISECONDS, this, awaitBytesHandler); +// TODO Figure out why moving this to the awaitBytesHandler +// causes test failures. readPending.release(); } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652007 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Author: markt Date: Thu Jan 15 09:21:40 2015 New Revision: 1652007 URL: http://svn.apache.org/r1652007 Log: Fix remaining NIO2 unit test failures after refactoring. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652007&r1=1652006&r2=1652007&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 09:21:40 2015 @@ -972,6 +972,7 @@ public class Nio2Endpoint extends Abstra socketBufferHandler.configureReadBufferForRead(); if (!socketBufferHandler.isReadBufferEmpty()) { +readPending.release(); return true; } @@ -1032,14 +1033,22 @@ public class Nio2Endpoint extends Abstra int newOffset = off; if (remaining > 0) { socketBufferHandler.getReadBuffer().get(b, off, remaining); -leftToWrite -= remaining; -newOffset += remaining; +// This may be sufficient to complete the request and we +// don't want to trigger another read since if there is no +// more data to read and this request takes a while to +// process the read will timeout triggering an error. +readPending.release(); +return remaining; } // Fill the read buffer as best we can. Only do a blocking read if // the current read is blocking AND there wasn't any data left over // in the read buffer. int nRead = fillReadBuffer(block && remaining == 0); +if (block && remaining == 0) { +// Just did a blocking read so release the semaphore +readPending.release(); +} // Fill as much of the remaining byte array as possible with the // data that was just read @@ -1367,12 +1376,13 @@ public class Nio2Endpoint extends Abstra failed(new EOFException(), attachment); return; } +// TODO: Lots of direct access to the socketWriteBuffer. +// Refactor to use socketBufferHandler attachment.pos += nWrite.intValue(); if (!attachment.buffer.hasRemaining()) { if (attachment.length <= 0) { // All data has now been written attachment.socket.setSendfileData(null); -attachment.buffer.clear(); try { attachment.fchannel.close(); } catch (IOException e) { @@ -1446,7 +1456,7 @@ public class Nio2Endpoint extends Abstra return SendfileState.ERROR; } } -socket.getSocket().getBufHandler().configureReadBufferForWrite(); +socket.getSocket().getBufHandler().configureWriteBufferForWrite(); ByteBuffer buffer = socket.getSocket().getBufHandler().getWriteBuffer(); int nRead = -1; try { @@ -1459,9 +1469,11 @@ public class Nio2Endpoint extends Abstra data.socket = socket; data.buffer = buffer; data.length -= nRead; -socket.getSocket().getBufHandler().configureReadBufferForRead(); +socket.getSocket().getBufHandler().configureWriteBufferForRead(); +Nio2Endpoint.startInline(); socket.getSocket().write(buffer, socket.getTimeout(), TimeUnit.MILLISECONDS, data, sendfile); +Nio2Endpoint.endInline(); if (data.doneInline) { if (data.error) { return SendfileState.ERROR; - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652009 - in /tomcat/trunk/java/org/apache: coyote/http11/InternalAprInputBuffer.java coyote/http11/InternalNio2InputBuffer.java coyote/http11/InternalNioInputBuffer.java tomcat/util/net/
Author: markt Date: Thu Jan 15 09:21:52 2015 New Revision: 1652009 URL: http://svn.apache.org/r1652009 Log: Align HTTP InputBuffer implementations Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1652009&r1=1652008&r2=1652009&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Thu Jan 15 09:21:52 2015 @@ -78,7 +78,8 @@ public class InternalAprInputBuffer exte wrapper = socketWrapper; -int bufLength = Math.max(headerBufferSize * 2, 8192); +int bufLength = headerBufferSize + +wrapper.getSocketBufferHandler().getReadBuffer().capacity(); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java?rev=1652009&r1=1652008&r2=1652009&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java Thu Jan 15 09:21:52 2015 @@ -78,7 +78,7 @@ public class InternalNio2InputBuffer ext wrapper = socketWrapper; int bufLength = headerBufferSize + -wrapper.getSocket().getBufHandler().getReadBuffer().capacity(); +wrapper.getSocketBufferHandler().getReadBuffer().capacity(); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; } Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1652009&r1=1652008&r2=1652009&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Thu Jan 15 09:21:52 2015 @@ -79,7 +79,7 @@ public class InternalNioInputBuffer exte wrapper = socketWrapper; int bufLength = headerBufferSize + -wrapper.getSocket().getBufHandler().getReadBuffer().capacity(); +wrapper.getSocketBufferHandler().getReadBuffer().capacity(); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1652009&r1=1652008&r2=1652009&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Thu Jan 15 09:21:52 2015 @@ -179,7 +179,7 @@ public abstract class SocketWrapperBase< return blockingStatusWriteLock; } public Object getWriteThreadLock() { return writeThreadLock; } - +public SocketBufferHandler getSocketBufferHandler() { return socketBufferHandler; } public abstract boolean isReadPending(); public boolean hasDataToWrite() { - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652008 - in /tomcat/trunk/java/org/apache/coyote/http11: InternalNio2InputBuffer.java InternalNioInputBuffer.java
Author: markt Date: Thu Jan 15 09:21:45 2015 New Revision: 1652008 URL: http://svn.apache.org/r1652008 Log: Align formatting to aid checking for differences between the InputBuffer implementations. Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java?rev=1652008&r1=1652007&r2=1652008&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java Thu Jan 15 09:21:45 2015 @@ -44,6 +44,7 @@ public class InternalNio2InputBuffer ext inputStreamInputBuffer = new SocketInputBuffer(); } + // - Instance Variables private SocketWrapperBase wrapper; @@ -70,20 +71,20 @@ public class InternalNio2InputBuffer ext } -// -- Protected Methods - @Override protected void init(SocketWrapperBase socketWrapper, AbstractEndpoint associatedEndpoint) throws IOException { wrapper = socketWrapper; -int bufLength = headerBufferSize + wrapper.getSocket().getBufHandler().getReadBuffer().capacity(); +int bufLength = headerBufferSize + +wrapper.getSocket().getBufHandler().getReadBuffer().capacity(); if (buf == null || buf.length < bufLength) { buf = new byte[bufLength]; } } + @Override protected boolean fill(boolean block) throws IOException, EOFException { Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java?rev=1652008&r1=1652007&r2=1652008&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Thu Jan 15 09:21:45 2015 @@ -40,9 +40,6 @@ public class InternalNioInputBuffer exte // --- Constructors -/** - * Alternate constructor. - */ public InternalNioInputBuffer(Request request, int headerBufferSize) { super(request, headerBufferSize); inputStreamInputBuffer = new SocketInputBuffer(); @@ -66,6 +63,7 @@ public class InternalNioInputBuffer exte super.recycle(); } + // -- Protected Methods @Override @@ -112,21 +110,17 @@ public class InternalNioInputBuffer exte // - InputStreamInputBuffer Inner Class - /** * This class is an input buffer which will read its data from an input * stream. */ -protected class SocketInputBuffer -implements InputBuffer { - +protected class SocketInputBuffer implements InputBuffer { /** * Read bytes into the specified chunk. */ @Override -public int doRead(ByteChunk chunk, Request req ) -throws IOException { +public int doRead(ByteChunk chunk, Request req) throws IOException { if (pos >= lastValid) { if (!fill(true)) //read body, must be blocking, as the thread is inside the app - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Connector refactoring progress update
The latest series of commits is the prep work for merging the Http11InputBuffer implementations. I'll be doing that shortly. The current status is that the tests pass but performance is currently worse for all connectors but especially for NIO2. Once I complete the InputBuffer merging, I plan on spending some time looking at tuning. I suspect that the buffering is not as efficient as it could be. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57445] New: java.util.Map$Entry cannot be resolved - jsp's no longer compile under java8
https://issues.apache.org/bugzilla/show_bug.cgi?id=57445 Bug ID: 57445 Summary: java.util.Map$Entry cannot be resolved - jsp's no longer compile under java8 Product: Tomcat 7 Version: 7.0.56 Hardware: All OS: Linux Status: NEW Severity: critical Priority: P2 Component: Jasper Assignee: dev@tomcat.apache.org Reporter: hau...@acm.org with tc7.0.28 from current debian stable I got the problem. As per http://stackoverflow.com/questions/19243458/tomcat7-not-compiling-jsp-examples , I got a 7.0.56, but the problem still persists org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: [1] in the generated java file: [my_jsp.java] The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:477) org.apache.jasper.compiler.Compiler.compile(Compiler.java:379) org.apache.jasper.compiler.Compiler.compile(Compiler.java:354) org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:727) Even when doing the also recommended <%@page import="java.util.Map" %><%@ page import="java.util.HashMap" %> java -version java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Connector refactoring progress update
2015-01-15 11:11 GMT+01:00 Mark Thomas : > The latest series of commits is the prep work for merging the > Http11InputBuffer implementations. I'll be doing that shortly. > > The current status is that the tests pass but performance is currently > worse for all connectors but especially for NIO2. > I just checked and my ab doesn't complete for whatever reason on NIO2 (the very last request hangs), but with the right timing to kiil it, I don't think the throughput is very much changed. > > Once I complete the InputBuffer merging, I plan on spending some time > looking at tuning. I suspect that the buffering is not as efficient as > it could be. > > Ok sure. Rémy
svn commit: r1652041 - /tomcat/trunk/java/org/apache/coyote/http11/
Author: markt Date: Thu Jan 15 10:48:52 2015 New Revision: 1652041 URL: http://svn.apache.org/r1652041 Log: Merge identical InputBuffer implementations into the abstract base class. Removed: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNio2InputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioInputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1652041&r1=1652040&r2=1652041&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu Jan 15 10:48:52 2015 @@ -72,7 +72,7 @@ public abstract class AbstractHttp11Proc /** * Input. */ -protected AbstractInputBuffer inputBuffer; +protected AbstractInputBuffer inputBuffer; /** @@ -615,7 +615,7 @@ public abstract class AbstractHttp11Proc * Exposes input buffer to super class to allow better code re-use. * @return The input buffer used by the processor. */ -protected AbstractInputBuffer getInputBuffer() { +protected AbstractInputBuffer getInputBuffer() { return inputBuffer; } @@ -774,9 +774,7 @@ public abstract class AbstractHttp11Proc InputFilter savedBody = new SavedRequestInputFilter(body); savedBody.setRequest(request); -@SuppressWarnings("unchecked") -AbstractInputBuffer internalBuffer = (AbstractInputBuffer) -request.getInputBuffer(); +AbstractInputBuffer internalBuffer = (AbstractInputBuffer) request.getInputBuffer(); internalBuffer.addActiveFilter(savedBody); break; } Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java?rev=1652041&r1=1652040&r2=1652041&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java Thu Jan 15 10:48:52 2015 @@ -23,6 +23,7 @@ import java.nio.charset.StandardCharsets import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; import org.apache.juli.logging.Log; +import org.apache.juli.logging.LogFactory; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.http.MimeHeaders; @@ -30,15 +31,22 @@ import org.apache.tomcat.util.net.Abstra import org.apache.tomcat.util.net.SocketWrapperBase; import org.apache.tomcat.util.res.StringManager; -public abstract class AbstractInputBuffer implements InputBuffer{ +/** + * InputBuffer for HTTP that provides request header parsing as well as transfer + * encoding. + * + * The type of socket used by the underlying I/O implementation + */ +public class AbstractInputBuffer implements InputBuffer { // -- Constants +private static final Log log = LogFactory.getLog(AbstractInputBuffer.class); + /** * The string manager for this package. */ -protected static final StringManager sm = -StringManager.getManager(Constants.Package); +protected static final StringManager sm = StringManager.getManager(AbstractInputBuffer.class); protected static final boolean[] HTTP_TOKEN_CHAR = new boolean[128]; @@ -143,6 +151,12 @@ public abstract class AbstractInputBuffe /** + * Wrapper that provides access to the underlying socket. + */ +protected SocketWrapperBase wrapper; + + +/** * Underlying input buffer. */ protected InputBuffer inputStreamInputBuffer; @@ -213,6 +227,8 @@ public abstract class AbstractInputBuffe headerParsePos = HeaderParsePosition.HEADER_START; headerData.recycle(); swallowInput = true; + +inputStreamInputBuffer = new SocketInputBuffer(); } @@ -245,9 +261,7 @@ public abstract class AbstractInputBuffe * Get filters. */ public InputFilter[] getFilters() { - return filterLibrary; - } @@ -269,7 +283,6 @@ public abstract class AbstractInputBuffe activeF
svn commit: r1652042 - in /tomcat/trunk/java/org/apache/coyote/http11: AbstractHttp11Processor.java AbstractInputBuffer.java Http11AprProcessor.java Http11InputBuffer.java Http11Nio2Processor.java Htt
Author: markt Date: Thu Jan 15 10:49:25 2015 New Revision: 1652042 URL: http://svn.apache.org/r1652042 Log: Rename Added: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java - copied, changed from r1652041, tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java Removed: tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1652042&r1=1652041&r2=1652042&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu Jan 15 10:49:25 2015 @@ -72,7 +72,7 @@ public abstract class AbstractHttp11Proc /** * Input. */ -protected AbstractInputBuffer inputBuffer; +protected Http11InputBuffer inputBuffer; /** @@ -615,7 +615,7 @@ public abstract class AbstractHttp11Proc * Exposes input buffer to super class to allow better code re-use. * @return The input buffer used by the processor. */ -protected AbstractInputBuffer getInputBuffer() { +protected Http11InputBuffer getInputBuffer() { return inputBuffer; } @@ -774,7 +774,7 @@ public abstract class AbstractHttp11Proc InputFilter savedBody = new SavedRequestInputFilter(body); savedBody.setRequest(request); -AbstractInputBuffer internalBuffer = (AbstractInputBuffer) request.getInputBuffer(); +Http11InputBuffer internalBuffer = (Http11InputBuffer) request.getInputBuffer(); internalBuffer.addActiveFilter(savedBody); break; } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1652042&r1=1652041&r2=1652042&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Thu Jan 15 10:49:25 2015 @@ -58,7 +58,7 @@ public class Http11AprProcessor extends super(endpoint); -inputBuffer = new AbstractInputBuffer(request, headerBufferSize); +inputBuffer = new Http11InputBuffer(request, headerBufferSize); request.setInputBuffer(getInputBuffer()); outputBuffer = new Http11OutputBuffer(response, headerBufferSize); Copied: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java (from r1652041, tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java) URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java?p2=tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java&p1=tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java&r1=1652041&r2=1652042&rev=1652042&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/AbstractInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Thu Jan 15 10:49:25 2015 @@ -37,16 +37,16 @@ import org.apache.tomcat.util.res.String * * The type of socket used by the underlying I/O implementation */ -public class AbstractInputBuffer implements InputBuffer { +public class Http11InputBuffer implements InputBuffer { // -- Constants -private static final Log log = LogFactory.getLog(AbstractInputBuffer.class); +private static final Log log = LogFactory.getLog(Http11InputBuffer.class); /** * The string manager for this package. */ -protected static final StringManager sm = StringManager.getManager(AbstractInputBuffer.class); +protected static final StringManager sm = StringManager.getManager(Http11InputBuffer.class); protected static final boolean[] HTTP_TOKEN_CHAR = new boolean[128]; @@ -207,7 +207,7 @@ public class AbstractInputBuffer impleme // --- Constructors -public AbstractInputBuffer(Request request, int headerBufferSize) { +public Http11InputBuffer(Request request, int headerBufferSize) { this.request = request; headers = request.getMimeHeaders(); Modified: tomcat/trunk/java/org/apache/co
svn commit: r1652048 - in /tomcat/trunk/java/org/apache/coyote/http11: AbstractHttp11Processor.java Http11InputBuffer.java
Author: markt Date: Thu Jan 15 11:05:40 2015 New Revision: 1652048 URL: http://svn.apache.org/r1652048 Log: Remove unused code. Reduce field and method visibility. Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1652048&r1=1652047&r2=1652048&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu Jan 15 11:05:40 2015 @@ -922,7 +922,7 @@ public abstract class AbstractHttp11Proc // Setting up the I/O setSocketWrapper(socketWrapper); -getInputBuffer().init(socketWrapper, endpoint); +getInputBuffer().init(socketWrapper); getOutputBuffer().init(socketWrapper); // Flags Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java?rev=1652048&r1=1652047&r2=1652048&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Thu Jan 15 11:05:40 2015 @@ -27,7 +27,6 @@ import org.apache.juli.logging.LogFactor import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.tomcat.util.http.MimeHeaders; -import org.apache.tomcat.util.net.AbstractEndpoint; import org.apache.tomcat.util.net.SocketWrapperBase; import org.apache.tomcat.util.res.StringManager; @@ -46,10 +45,10 @@ public class Http11InputBuffer implement /** * The string manager for this package. */ -protected static final StringManager sm = StringManager.getManager(Http11InputBuffer.class); +private static final StringManager sm = StringManager.getManager(Http11InputBuffer.class); -protected static final boolean[] HTTP_TOKEN_CHAR = new boolean[128]; +private static final boolean[] HTTP_TOKEN_CHAR = new boolean[128]; static { for (int i = 0; i < 128; i++) { if (i < 32) { @@ -104,81 +103,81 @@ public class Http11InputBuffer implement /** * Associated Coyote request. */ -protected Request request; +private Request request; /** * Headers of the associated request. */ -protected MimeHeaders headers; +private MimeHeaders headers; /** * State. */ -protected boolean parsingHeader; +private boolean parsingHeader; /** * Swallow input ? (in the case of an expectation) */ -protected boolean swallowInput; +private boolean swallowInput; /** * The read buffer. */ -protected byte[] buf; +private byte[] buf; /** * Last valid byte. */ -protected int lastValid; +private int lastValid; /** * Position in the buffer. */ -protected int pos; +private int pos; /** * Pos of the end of the header in the buffer, which is also the * start of the body. */ -protected int end; +private int end; /** * Wrapper that provides access to the underlying socket. */ -protected SocketWrapperBase wrapper; +private SocketWrapperBase wrapper; /** * Underlying input buffer. */ -protected InputBuffer inputStreamInputBuffer; +private InputBuffer inputStreamInputBuffer; /** * Filter library. * Note: Filter[Constants.CHUNKED_FILTER] is always the "chunked" filter. */ -protected InputFilter[] filterLibrary; +private InputFilter[] filterLibrary; /** * Active filters (in order). */ -protected InputFilter[] activeFilters; +private InputFilter[] activeFilters; /** * Index of the last active filter. */ -protected int lastActiveFilter; +private int lastActiveFilter; /** @@ -197,12 +196,12 @@ public class Http11InputBuffer implement * Maximum allowed size of the HTTP request line plus headers plus any * leading blank lines. */ -protected final int headerBufferSize; +private final int headerBufferSize; /** * Known size of the NioChannel read buffer. */ -protected int socketReadBufferSize; +private int socketReadBufferSize; // --- Constructors @@ -239,7 +238,7 @@ public class Http11InputBuffer implement * * @throws NullPointerException if t
svn commit: r1652051 - /tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java
Author: markt Date: Thu Jan 15 11:07:07 2015 New Revision: 1652051 URL: http://svn.apache.org/r1652051 Log: Reduce visibility. Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java?rev=1652051&r1=1652050&r2=1652051&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Thu Jan 15 11:07:07 2015 @@ -1053,7 +1053,7 @@ public class Http11InputBuffer implement * This class is an input buffer which will read its data from an input * stream. */ -protected class SocketInputBuffer implements InputBuffer { +private class SocketInputBuffer implements InputBuffer { /** * Read bytes into the specified chunk. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652055 - in /tomcat/trunk/java/org/apache/coyote/http11: AbstractHttp11Processor.java Http11AprProcessor.java Http11Nio2Processor.java Http11NioProcessor.java
Author: markt Date: Thu Jan 15 11:12:34 2015 New Revision: 1652055 URL: http://svn.apache.org/r1652055 Log: Reduce duplication in HttpProcessor implementation constructors Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1652055&r1=1652054&r2=1652055&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu Jan 15 11:12:34 2015 @@ -227,9 +227,19 @@ public abstract class AbstractHttp11Proc protected HttpUpgradeHandler httpUpgradeHandler = null; -public AbstractHttp11Processor(AbstractEndpoint endpoint) { +public AbstractHttp11Processor(int maxHttpHeaderSize, AbstractEndpoint endpoint, +int maxTrailerSize, int maxExtensionSize, int maxSwallowSize) { + super(endpoint); userDataHelper = new UserDataHelper(getLog()); + +inputBuffer = new Http11InputBuffer(request, maxHttpHeaderSize); +request.setInputBuffer(getInputBuffer()); + +outputBuffer = new Http11OutputBuffer(response, maxHttpHeaderSize); +response.setOutputBuffer(getOutputBuffer()); + +initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize); } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1652055&r1=1652054&r2=1652055&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Thu Jan 15 11:12:34 2015 @@ -50,21 +50,13 @@ public class Http11AprProcessor extends return log; } -// --- Constructors +// --- Constructors -public Http11AprProcessor(int headerBufferSize, AbstractEndpoint endpoint, +public Http11AprProcessor(int maxHttpHeaderSize, AbstractEndpoint endpoint, int maxTrailerSize, int maxExtensionSize, int maxSwallowSize) { -super(endpoint); - -inputBuffer = new Http11InputBuffer(request, headerBufferSize); -request.setInputBuffer(getInputBuffer()); - -outputBuffer = new Http11OutputBuffer(response, headerBufferSize); -response.setOutputBuffer(getOutputBuffer()); - -initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize); +super(maxHttpHeaderSize, endpoint, maxTrailerSize, maxExtensionSize, maxSwallowSize); } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java?rev=1652055&r1=1652054&r2=1652055&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java Thu Jan 15 11:12:34 2015 @@ -54,21 +54,13 @@ public class Http11Nio2Processor extends */ protected SSLSupport sslSupport; -// --- Constructors +// --- Constructors public Http11Nio2Processor(int maxHttpHeaderSize, AbstractEndpoint endpoint, int maxTrailerSize, int maxExtensionSize, int maxSwallowSize) { -super(endpoint); - -inputBuffer = new Http11InputBuffer(request, maxHttpHeaderSize); -request.setInputBuffer(getInputBuffer()); - -outputBuffer = new Http11OutputBuffer(response, maxHttpHeaderSize); -response.setOutputBuffer(getOutputBuffer()); - -initializeFilters(maxTrailerSize, maxExtensionSize, maxSwallowSize); +super(maxHttpHeaderSize, endpoint, maxTrailerSize, maxExtensionSize, maxSwallowSize); } Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1652055&r1=1652054&r2=1652055&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (orig
[Bug 57446] New: Catalina presents a wrapped ServletContext in de-init phase to application listeners
https://issues.apache.org/bugzilla/show_bug.cgi?id=57446 Bug ID: 57446 Summary: Catalina presents a wrapped ServletContext in de-init phase to application listeners Product: Tomcat 8 Version: 8.0.9 Hardware: PC Status: NEW Severity: normal Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: b...@denkformat.de JSF Applications (Mojarra 2.2.x) fail to shutdown properly, because Catalina presents a wrapped ServletContext (NoPluggabilityServletContext) in de-init phase (e.g. stop webapp cmd issued via jmx). The problem here is that the wrapped ServletContext (NoPluggabilityServletContext) does not appear to be "equal" (equals, etc. methods not delegated) as the one in the init phase (start). I filed a bug on the mojarra JIRA: https://java.net/jira/browse/JAVASERVERFACES-3687 but it was not accepted, because they argue this is a container issue. Maybe a workaround could fix it for context "comparing" webapps. In this case the mojarra implementation uses a List (CopyOnWriteArrayList) to match (contains) if the ServletContext has been initialized. So a delegation of the "equals" method in the NoPluggabilityServletContext class could do the fix, but might cause other sideeffects in the container, which i didn't lookout. A more detailed approach would be to get a light on the specification - what doues it say about the ServletContext instance and presented proxies in the application lifecycle. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Connector refactoring progress update
On 15/01/2015 10:25, Rémy Maucherat wrote: > 2015-01-15 11:11 GMT+01:00 Mark Thomas : > >> The latest series of commits is the prep work for merging the >> Http11InputBuffer implementations. I'll be doing that shortly. >> >> The current status is that the tests pass but performance is currently >> worse for all connectors but especially for NIO2. >> > > I just checked and my ab doesn't complete for whatever reason on NIO2 (the > very last request hangs), but with the right timing to kiil it, I don't > think the throughput is very much changed. Thanks for the pointer. That explains what I was seeing. I had maxKeepAliveRequests at the default so the delay was impacting the results. Ignore the delay and the 8.0.x vs. 9.0.x results are comparable. I'll take a look and see if I can figure out what is going on. Something related to a pending read I suspect. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Connector refactoring progress update
2015-01-15 13:21 GMT+01:00 Mark Thomas : > Thanks for the pointer. That explains what I was seeing. I had > maxKeepAliveRequests at the default so the delay was impacting the > results. Ignore the delay and the 8.0.x vs. 9.0.x results are comparable. > > I'll take a look and see if I can figure out what is going on. Something > related to a pending read I suspect. > > The ab sometimes completes, but it always has a handful of failed requests (less than 5 over 1M) so there's some corruption going on. It would probably be more obvious on other payloads. Maybe this could be something about the awaitBytes you weren't sure about. Good thing the 8.x code can still be used as a reference. Rémy
[VOTE][RESULT] Release Apache Tomcat 8.0.17
The following votes were cast: Binding: +1: violetagg, markt, remm, kkolinko, jfarcand, schultz Non-binding +1: fschumacher, mgrigorov, Ognjen Blagojevic No other votes were case. The votes therefore passes. I'll start the remaining steps of the release process shortly. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652108 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Author: remm Date: Thu Jan 15 14:28:13 2015 New Revision: 1652108 URL: http://svn.apache.org/r1652108 Log: Fix use of the semaphore (it seems equivalent to not using it). This fixes the ab corruption I was experiencing. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652108&r1=1652107&r2=1652108&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 14:28:13 2015 @@ -744,11 +744,13 @@ public class Nio2Endpoint extends Abstra failed(new ClosedChannelException(), attachment); return; } +readPending.release(); getEndpoint().processSocket(attachment, SocketStatus.OPEN_READ, true); } @Override public void failed(Throwable exc, SocketWrapperBase attachment) { +readPending.release(); getEndpoint().processSocket(attachment, SocketStatus.DISCONNECT, true); } }; @@ -1310,9 +1312,6 @@ public class Nio2Endpoint extends Abstra getSocket().getBufHandler().configureReadBufferForWrite(); getSocket().read(getSocket().getBufHandler().getReadBuffer(), getTimeout(), TimeUnit.MILLISECONDS, this, awaitBytesHandler); -// TODO Figure out why moving this to the awaitBytesHandler -// causes test failures. -readPending.release(); } } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652121 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Author: markt Date: Thu Jan 15 14:56:48 2015 New Revision: 1652121 URL: http://svn.apache.org/r1652121 Log: No need for volatile here. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652121&r1=1652120&r2=1652121&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 14:56:48 2015 @@ -727,7 +727,7 @@ public class Nio2Endpoint extends Abstra private final CompletionHandler> readCompletionHandler; private final Semaphore readPending = new Semaphore(1); -private volatile boolean readInterest = true; +private boolean readInterest = true; // Guarded by readCompletionHandler private final CompletionHandler writeCompletionHandler; private final CompletionHandler gatheringWriteCompletionHandler; - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652122 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Author: markt Date: Thu Jan 15 14:56:53 2015 New Revision: 1652122 URL: http://svn.apache.org/r1652122 Log: Simplify Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652122&r1=1652121&r2=1652122&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 14:56:53 2015 @@ -1031,8 +1031,6 @@ public class Nio2Endpoint extends Abstra } // Copy what data there is in the read buffer to the byte array -int leftToWrite = len; -int newOffset = off; if (remaining > 0) { socketBufferHandler.getReadBuffer().get(b, off, remaining); // This may be sufficient to complete the request and we @@ -1046,8 +1044,8 @@ public class Nio2Endpoint extends Abstra // Fill the read buffer as best we can. Only do a blocking read if // the current read is blocking AND there wasn't any data left over // in the read buffer. -int nRead = fillReadBuffer(block && remaining == 0); -if (block && remaining == 0) { +int nRead = fillReadBuffer(block); +if (block) { // Just did a blocking read so release the semaphore readPending.release(); } @@ -1056,12 +1054,10 @@ public class Nio2Endpoint extends Abstra // data that was just read if (nRead > 0) { socketBufferHandler.configureReadBufferForRead(); -if (nRead > leftToWrite) { -socketBufferHandler.getReadBuffer().get(b, newOffset, leftToWrite); -leftToWrite = 0; +if (nRead > len) { +socketBufferHandler.getReadBuffer().get(b, off, len); } else { -socketBufferHandler.getReadBuffer().get(b, newOffset, nRead); -leftToWrite -= nRead; +socketBufferHandler.getReadBuffer().get(b, off, nRead); } } else if (nRead == 0 && !block) { readInterest = true; @@ -1070,9 +1066,9 @@ public class Nio2Endpoint extends Abstra } if (log.isDebugEnabled()) { -log.debug("Socket: [" + this + "], Read: [" + (len - leftToWrite) + "]"); +log.debug("Socket: [" + this + "], Read: [" + nRead + "]"); } -return len - leftToWrite; +return nRead; } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652123 - in /tomcat/trunk/java/org/apache: coyote/http11/upgrade/UpgradeServletInputStream.java tomcat/util/net/AprEndpoint.java tomcat/util/net/Nio2Endpoint.java tomcat/util/net/NioEndp
Author: markt Date: Thu Jan 15 14:56:59 2015 New Revision: 1652123 URL: http://svn.apache.org/r1652123 Log: Rename for clarity. Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java?rev=1652123&r1=1652122&r2=1652123&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/UpgradeServletInputStream.java Thu Jan 15 14:56:59 2015 @@ -68,7 +68,7 @@ public class UpgradeServletInputStream e } try { -ready = Boolean.valueOf(socketWrapper.isReady()); +ready = Boolean.valueOf(socketWrapper.isReadyForRead()); } catch (IOException e) { onError(e); } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1652123&r1=1652122&r2=1652123&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Thu Jan 15 14:56:59 2015 @@ -2507,7 +2507,7 @@ public class AprEndpoint extends Abstrac @Override -public boolean isReady() { +public boolean isReadyForRead() { return !eagain; } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652123&r1=1652122&r2=1652123&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 14:56:59 2015 @@ -965,7 +965,7 @@ public class Nio2Endpoint extends Abstra @Override -public boolean isReady() throws IOException { +public boolean isReadyForRead() throws IOException { synchronized (readCompletionHandler) { if (!readPending.tryAcquire()) { readInterest = true; Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=1652123&r1=1652122&r2=1652123&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Thu Jan 15 14:56:59 2015 @@ -1400,7 +1400,7 @@ public class NioEndpoint extends Abstrac @Override -public boolean isReady() throws IOException { +public boolean isReadyForRead() throws IOException { socketBufferHandler.configureReadBufferForRead(); if (socketBufferHandler.getReadBuffer().remaining() > 0) { Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1652123&r1=1652122&r2=1652123&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Thu Jan 15 14:56:59 2015 @@ -277,7 +277,7 @@ public abstract class SocketWrapperBase< public abstract int read(boolean block, byte[] b, int off, int len) throws IOException; -public abstract boolean isReady() throws IOException; +public abstract boolean isReadyForRead() throws IOException; /** * Return input that has been read to the input buffer for re-reading by the - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652124 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Author: markt Date: Thu Jan 15 14:57:04 2015 New Revision: 1652124 URL: http://svn.apache.org/r1652124 Log: Minor optimisation - remove unnecessary call. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652124&r1=1652123&r2=1652124&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 14:57:04 2015 @@ -972,7 +972,6 @@ public class Nio2Endpoint extends Abstra return false; } -socketBufferHandler.configureReadBufferForRead(); if (!socketBufferHandler.isReadBufferEmpty()) { readPending.release(); return true; - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652139 - /tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java
Author: remm Date: Thu Jan 15 15:41:02 2015 New Revision: 1652139 URL: http://svn.apache.org/r1652139 Log: Fix SSL NIO2 tests (and a glitch with non blocking probably), no idea how this happened since there's the same isEmpty for the write buffer. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java?rev=1652139&r1=1652138&r2=1652139&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java Thu Jan 15 15:41:02 2015 @@ -78,9 +78,9 @@ public class SocketBufferHandler { public boolean isReadBufferEmpty() { if (readBufferConfiguredForWrite) { -return readBuffer.position() > 0; +return readBuffer.position() == 0; } else { -return readBuffer.remaining() > 0; +return readBuffer.remaining() == 0; } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1652108 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
On 15/01/2015 14:28, r...@apache.org wrote: > Author: remm > Date: Thu Jan 15 14:28:13 2015 > New Revision: 1652108 > > URL: http://svn.apache.org/r1652108 > Log: > Fix use of the semaphore (it seems equivalent to not using it). This fixes > the ab corruption I was experiencing. Thanks. That fixes the performance issue I was seeing (which was caused by an exception during socket close so the lower maxKeepAliveRequests the more obvious the problem became). It certainly drives home the message that you never, ever want exceptions routinely occurring on the critical path. I'll run the unit tests locally as well as let the CI system do its thing to see if I still get the unit test failures I got when I tried to the patch you just applied. My best guess right now is the patch below exposed another error that, if I am lucky, I have already fixed. Mark > Modified: > tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java > > Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1652108&r1=1652107&r2=1652108&view=diff > == > --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) > +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 15 > 14:28:13 2015 > @@ -744,11 +744,13 @@ public class Nio2Endpoint extends Abstra > failed(new ClosedChannelException(), attachment); > return; > } > +readPending.release(); > getEndpoint().processSocket(attachment, > SocketStatus.OPEN_READ, true); > } > > @Override > public void failed(Throwable exc, SocketWrapperBase > attachment) { > +readPending.release(); > getEndpoint().processSocket(attachment, > SocketStatus.DISCONNECT, true); > } > }; > @@ -1310,9 +1312,6 @@ public class Nio2Endpoint extends Abstra > getSocket().getBufHandler().configureReadBufferForWrite(); > getSocket().read(getSocket().getBufHandler().getReadBuffer(), > getTimeout(), TimeUnit.MILLISECONDS, this, > awaitBytesHandler); > -// TODO Figure out why moving this to the awaitBytesHandler > -// causes test failures. > -readPending.release(); > } > } > } > > > > - > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1652139 - /tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java
On 15/01/2015 15:41, r...@apache.org wrote: > Author: remm Date: Thu Jan 15 15:41:02 2015 New Revision: 1652139 > > URL: http://svn.apache.org/r1652139 Log: Fix SSL NIO2 tests (and a > glitch with non blocking probably), no idea how this happened since > there's the same isEmpty for the write buffer. If memory serves me correctly the steps to reproduce this error are: - stay up stupidly late trying to finish off some refactoring - make a silly mistake because you are tired - copy & paste code with silly mistake - spot silly mistake but only fix the original :) Thanks for spotting and fixing this. For some reason this never triggered an error on the laptop I have been using for development. Cheers, Mark > > Modified: > tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java > > Modified: > tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java > > URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java?rev=1652139&r1=1652138&r2=1652139&view=diff > == > > --- tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java (original) > +++ > tomcat/trunk/java/org/apache/tomcat/util/net/SocketBufferHandler.java > Thu Jan 15 15:41:02 2015 @@ -78,9 +78,9 @@ public class > SocketBufferHandler { > > public boolean isReadBufferEmpty() { if > (readBufferConfiguredForWrite) { -return > readBuffer.position() > 0; +return readBuffer.position() > == 0; } else { -return readBuffer.remaining() > 0; + > return readBuffer.remaining() == 0; } } > > > > > - > > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57445] java.util.Map$Entry cannot be resolved - jsp's no longer compile under java8
https://issues.apache.org/bugzilla/show_bug.cgi?id=57445 --- Comment #1 from Christopher Schultz --- Care to post a sample JSP? Are you sure you don't have an old ECJ library laying around? -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1652108 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
2015-01-15 17:03 GMT+01:00 Mark Thomas : > On 15/01/2015 14:28, r...@apache.org wrote: > > Author: remm > > Date: Thu Jan 15 14:28:13 2015 > > New Revision: 1652108 > > > > URL: http://svn.apache.org/r1652108 > > Log: > > Fix use of the semaphore (it seems equivalent to not using it). This > fixes the ab corruption I was experiencing. > > Thanks. That fixes the performance issue I was seeing (which was caused > by an exception during socket close so the lower maxKeepAliveRequests > the more obvious the problem became). It certainly drives home the > message that you never, ever want exceptions routinely occurring on the > critical path. > > For the ab results, I am now at (8 to trunk before latest refactoring to trunk): NIO1: 50k -> 60k -> 57k APR: 67k -> 67k -> 62k NIO2: 65k -> 65k -> 60k So I see a small difference with this latest refactoring. Rémy
svn commit: r1652240 - /tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
Author: markt Date: Thu Jan 15 19:19:11 2015 New Revision: 1652240 URL: http://svn.apache.org/r1652240 Log: Remove incorrect comment Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1652240&r1=1652239&r2=1652240&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu Jan 15 19:19:11 2015 @@ -961,7 +961,6 @@ public abstract class AbstractHttp11Proc keptAlive = true; // Set this every time in case limit has been changed via JMX request.getMimeHeaders().setLimit(endpoint.getMaxHeaderCount()); -// Currently only NIO will ever return false here if (!getInputBuffer().parseHeaders()) { // We've read part of the request, don't recycle it // instead associate it with the socket - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1652252 - /tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java
Author: markt Date: Thu Jan 15 19:35:39 2015 New Revision: 1652252 URL: http://svn.apache.org/r1652252 Log: Make a couple of fields final and remove some unnecessary code. Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java?rev=1652252&r1=1652251&r2=1652252&view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11InputBuffer.java Thu Jan 15 19:35:39 2015 @@ -103,13 +103,13 @@ public class Http11InputBuffer implement /** * Associated Coyote request. */ -private Request request; +private final Request request; /** * Headers of the associated request. */ -private MimeHeaders headers; +private final MimeHeaders headers; /** @@ -224,7 +224,6 @@ public class Http11InputBuffer implement parsingRequestLineStart = 0; parsingRequestLineQPos = -1; headerParsePos = HeaderParsePosition.HEADER_START; -headerData.recycle(); swallowInput = true; inputStreamInputBuffer = new SocketInputBuffer(); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1652108 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
On 15/01/2015 18:24, Rémy Maucherat wrote: > 2015-01-15 17:03 GMT+01:00 Mark Thomas : > >> On 15/01/2015 14:28, r...@apache.org wrote: >>> Author: remm >>> Date: Thu Jan 15 14:28:13 2015 >>> New Revision: 1652108 >>> >>> URL: http://svn.apache.org/r1652108 >>> Log: >>> Fix use of the semaphore (it seems equivalent to not using it). This >> fixes the ab corruption I was experiencing. >> >> Thanks. That fixes the performance issue I was seeing (which was caused >> by an exception during socket close so the lower maxKeepAliveRequests >> the more obvious the problem became). It certainly drives home the >> message that you never, ever want exceptions routinely occurring on the >> critical path. >> > For the ab results, I am now at (8 to trunk before latest refactoring to > trunk): > NIO1: 50k -> 60k -> 57k > APR: 67k -> 67k -> 62k > NIO2: 65k -> 65k -> 60k > > So I see a small difference with this latest refactoring. Looks like I still have some work to do. I'll keep chipping away with the performance improvements along side my 8.0.x next work. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57282] request process UML diagram seems outdated
https://issues.apache.org/bugzilla/show_bug.cgi?id=57282 --- Comment #14 from Stephen Chen --- Created attachment 32368 --> https://issues.apache.org/bugzilla/attachment.cgi?id=32368&action=edit Revised(V3) request process according to Mark's comment -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57282] request process UML diagram seems outdated
https://issues.apache.org/bugzilla/show_bug.cgi?id=57282 --- Comment #15 from Stephen Chen --- Created attachment 32369 --> https://issues.apache.org/bugzilla/attachment.cgi?id=32369&action=edit Revised(V3) authenticate process according to Mark's comment -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57282] request process UML diagram seems outdated
https://issues.apache.org/bugzilla/show_bug.cgi?id=57282 --- Comment #16 from Stephen Chen --- (In reply to Mark Thomas from comment #13) > Broadly it looks OK but the detail around the Pipelines isn't right. Calls > to getFirst() are missing and some method names shown don't exist. Also > methods are being called on the wrong objects (e.g. getHost() on the > StandardHost). > > Similar comments apply to the Authentication diagram. For example > getContext() is shown as being called on StandardContext. > > I'd consider ignoring the various getHost(), getPipeline() calls and just > show the calls that do the real work. Mark, thanks for your valuable comment as a reader. That diagram wasn't that strict, since in my mind, I wanted to express the process in a verbose&abstract way which is confusing people. I have removed those unnecessary methods(getHost, getContext...) from previous diagrams, please check the latest ones and give comments, would be delighted to help. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GUMP@vmgump]: Project tomcat-tc8.0.x-test-apr (in module tomcat-8.0.x) failed
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at gene...@gump.apache.org. Project tomcat-tc8.0.x-test-apr has an issue affecting its community integration. This issue affects 1 projects, and has been outstanding for 8 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - tomcat-tc8.0.x-test-apr : Tomcat 8.x, a web server implementing the Java Servlet 3.1, ... Full details are available at: http://vmgump.apache.org/gump/public/tomcat-8.0.x/tomcat-tc8.0.x-test-apr/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -DEBUG- Dependency on commons-daemon exists, no need to add for property commons-daemon.native.src.tgz. -DEBUG- Dependency on commons-daemon exists, no need to add for property tomcat-native.tar.gz. -INFO- Failed with reason build failed -INFO- Project Reports in: /srv/gump/public/workspace/tomcat-8.0.x/output/logs-APR -INFO- Project Reports in: /srv/gump/public/workspace/tomcat-8.0.x/output/test-tmp-APR/logs The following work was performed: http://vmgump.apache.org/gump/public/tomcat-8.0.x/tomcat-tc8.0.x-test-apr/gump_work/build_tomcat-8.0.x_tomcat-tc8.0.x-test-apr.html Work Name: build_tomcat-8.0.x_tomcat-tc8.0.x-test-apr (Type: Build) Work ended in a state of : Failed Elapsed: 26 mins 17 secs Command Line: /usr/lib/jvm/java-8-oracle/bin/java -Djava.awt.headless=true -Dbuild.sysclasspath=only org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Djunit.jar=/srv/gump/public/workspace/junit/target/junit-4.13-SNAPSHOT.jar -Dobjenesis.jar=/srv/gump/public/workspace/objenesis/main/target/objenesis-2.2-SNAPSHOT.jar -Dtest.reports=output/logs-APR -Dtomcat-native.tar.gz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-20150116-native-src.tar.gz -Dexamples.sources.skip=true -Djdt.jar=/srv/gump/packages/eclipse/plugins/R-4.4-201406061215/ecj-4.4.jar -Dtest.apr.loc=/srv/gump/public/workspace/tomcat-native/dest-20150116/lib -Dcommons-daemon.jar=/srv/gump/public/workspace/apache-commons/daemon/dist/commons-daemon-20150116.jar -Dcommons-daemon.native.src.tgz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-20150116-native-src.tar.gz -Dtest.temp=output/test-tmp-APR -Dtest.accesslog=true -Dexecute.test.nio=false -Dtest .openssl.path=/srv/gump/public/workspace/openssl/dest-20150116/bin/openssl -Dexecute.test.apr=true -Dexecute.test.bio=false -Dexecute.test.nio2=false -Deasymock.jar=/srv/gump/public/workspace/easymock/easymock/target/easymock-3.4-SNAPSHOT.jar -Dhamcrest.jar=/srv/gump/public/workspace/hamcrest/build/hamcrest-all-20150116.jar -Dcglib.jar=/srv/gump/packages/cglib/cglib-nodep-2.2.jar test [Working Directory: /srv/gump/public/workspace/tomcat-8.0.x] CLASSPATH: /usr/lib/jvm/java-8-oracle/lib/tools.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/webapps/examples/WEB-INF/classes:/srv/gump/public/workspace/tomcat-8.0.x/output/testclasses:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit4.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/bin/bootstrap.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/bin/tomcat-juli.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/annotations-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/servlet-api.ja r:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/jsp-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/el-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/websocket-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina-ant.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina-storeconfig.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/tomcat-coyote.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/jasper.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/jasper-el.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina-tribes.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina-ha.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/tomcat-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/to
[GUMP@vmgump]: Project tomcat-trunk-test-apr (in module tomcat-trunk) failed
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at gene...@gump.apache.org. Project tomcat-trunk-test-apr has an issue affecting its community integration. This issue affects 1 projects, and has been outstanding for 14 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - tomcat-trunk-test-apr : Tomcat 9.x, a web server implementing the Java Servlet 4.0, ... Full details are available at: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-test-apr/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -DEBUG- Dependency on commons-daemon exists, no need to add for property commons-daemon.native.src.tgz. -DEBUG- Dependency on commons-daemon exists, no need to add for property tomcat-native.tar.gz. -INFO- Failed with reason build failed -INFO- Project Reports in: /srv/gump/public/workspace/tomcat-trunk/output/logs-APR -INFO- Project Reports in: /srv/gump/public/workspace/tomcat-trunk/output/test-tmp-APR/logs The following work was performed: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-test-apr/gump_work/build_tomcat-trunk_tomcat-trunk-test-apr.html Work Name: build_tomcat-trunk_tomcat-trunk-test-apr (Type: Build) Work ended in a state of : Failed Elapsed: 24 mins 2 secs Command Line: /usr/lib/jvm/java-8-oracle/bin/java -Djava.awt.headless=true -Dbuild.sysclasspath=only org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Djunit.jar=/srv/gump/public/workspace/junit/target/junit-4.13-SNAPSHOT.jar -Dobjenesis.jar=/srv/gump/public/workspace/objenesis/main/target/objenesis-2.2-SNAPSHOT.jar -Dtest.reports=output/logs-APR -Dtomcat-native.tar.gz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-20150116-native-src.tar.gz -Dexamples.sources.skip=true -Djdt.jar=/srv/gump/packages/eclipse/plugins/R-4.4-201406061215/ecj-4.4.jar -Dtest.apr.loc=/srv/gump/public/workspace/tomcat-native/dest-20150116/lib -Dcommons-daemon.jar=/srv/gump/public/workspace/apache-commons/daemon/dist/commons-daemon-20150116.jar -Dcommons-daemon.native.src.tgz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-20150116-native-src.tar.gz -Dtest.temp=output/test-tmp-APR -Dtest.accesslog=true -Dexecute.test.nio=false -Dtest .openssl.path=/srv/gump/public/workspace/openssl/dest-20150116/bin/openssl -Dexecute.test.apr=true -Dexecute.test.nio2=false -Deasymock.jar=/srv/gump/public/workspace/easymock/easymock/target/easymock-3.4-SNAPSHOT.jar -Dhamcrest.jar=/srv/gump/public/workspace/hamcrest/build/hamcrest-all-20150116.jar -Dcglib.jar=/srv/gump/packages/cglib/cglib-nodep-2.2.jar test [Working Directory: /srv/gump/public/workspace/tomcat-trunk] CLASSPATH: /usr/lib/jvm/java-8-oracle/lib/tools.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/webapps/examples/WEB-INF/classes:/srv/gump/public/workspace/tomcat-trunk/output/testclasses:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit4.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/bin/bootstrap.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/bin/tomcat-juli.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/annotations-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/servlet-api.ja r:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/jsp-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/el-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/websocket-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-ant.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-storeconfig.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-coyote.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/jasper.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/jasper-el.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-tribes.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-ha.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-jni.jar:/srv/gump/public/workspac