Re: [VOTE] Release Apache Tomcat 8.0.17

2015-01-15 Thread Ognjen Blagojevic

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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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/

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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/

2015-01-15 Thread markt
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/

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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/

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread 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.

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

2015-01-15 Thread bugzilla
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 Thread Rémy Maucherat
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/

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread bugzilla
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

2015-01-15 Thread Mark Thomas
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 Thread Rémy Maucherat
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

2015-01-15 Thread Mark Thomas
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

2015-01-15 Thread remm
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread remm
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

2015-01-15 Thread 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.

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

2015-01-15 Thread Mark Thomas
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

2015-01-15 Thread bugzilla
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 Thread Rémy Maucherat
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

2015-01-15 Thread markt
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

2015-01-15 Thread markt
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

2015-01-15 Thread Mark Thomas
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

2015-01-15 Thread bugzilla
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

2015-01-15 Thread bugzilla
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

2015-01-15 Thread bugzilla
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

2015-01-15 Thread Bill Barker
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

2015-01-15 Thread Bill Barker
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