Am 04.02.2016 um 23:44 schrieb Rainer Jung:
Am 03.02.2016 um 10:05 schrieb Mark Thomas:
The proposed Apache Tomcat 8.0.32 release is now available for voting.

The main changes since 8.0.30 are:

- Restore the default for mapperContextRootRedirectEnabled to true

- Update the packaged version of the Tomcat Native Library to 1.2.4
   to pick up the Windows binaries that are based on OpenSSL 1.0.2e

- Expand session attribute filtering on load/unload to all managers

It can be obtained from:
https://dist.apache.org/repos/dist/dev/tomcat/tomcat-8/v8.0.32/
The Maven staging repo is:
https://repository.apache.org/content/repositories/orgapachetomcat-1063/
The svn tag is:
http://svn.apache.org/repos/asf/tomcat/tc8.0.x/tags/TOMCAT_8_0_32/

The proposed 8.0.32 release is:
[ ] Broken - do not release
[ ] Stable - go ahead and release as 8.0.32

Preliminary result: I see a hang in org.apache.tomcat.util.net.TestSsl
for NIO2. It hangs now since about 4 hours. Stack:

     [junit] "main" prio=3 tid=0x0002a800 nid=0x2 runnable [0xfdf7d000]
     [junit]    java.lang.Thread.State: RUNNABLE
     [junit]     at java.net.SocketInputStream.socketRead0(Native Method)
     [junit]     at
java.net.SocketInputStream.read(SocketInputStream.java:152)
     [junit]     at
java.net.SocketInputStream.read(SocketInputStream.java:122)
     [junit]     at
sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
     [junit]     at sun.security.ssl.InputRecord.read(InputRecord.java:480)
     [junit]     at
sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:934)
     [junit]     - locked <0xe6b5b818> (a java.lang.Object)
     [junit]     at
sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:891)
     [junit]     at
sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
     [junit]     - locked <0xe6b75ee0> (a sun.security.ssl.AppInputStream)
     [junit]     at
sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
     [junit]     at
sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
     [junit]     at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
     [junit]     - locked <0xe6b76748> (a java.io.InputStreamReader)
     [junit]     at sun.nio.cs.StreamDecoder.read0(StreamDecoder.java:126)
     [junit]     - locked <0xe6b76748> (a java.io.InputStreamReader)
     [junit]     at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:112)
     [junit]     at
java.io.InputStreamReader.read(InputStreamReader.java:168)
     [junit]     at
org.apache.tomcat.util.net.TestSsl.doRequest(TestSsl.java:159)
     [junit]     at
org.apache.tomcat.util.net.TestSsl.testRenegotiateWorks(TestSsl.java:133)


Due to truss the thread reads from the following connection

127.0.0.1.47878      127.0.0.1.47877      49152      0 49152      0
ESTABLISHED
127.0.0.1.47877      127.0.0.1.47878      49152      0 49306      0
ESTABLISHED

The thread dump does not contain any frames that belong to the client
(as far as I can judge).

This is somewhat reproducible for me using Java 1.7.0_80. It occurred 2 times during 10 iterations of only running TestSsl. With Java 1.0.8_72 it does not happen during 20 runs. So it seems to be a Java 7 SSL reneg issue.

The stack is always the same as above.

One additional observation, maybe related: the access log for the test running under Java 8 always contains 13 lines. When running under Java 7, even when the test does not hang, the file sometimes contains 12, sometimes 13 lines. The "missing" line is one of the first two lines. In the 13 lines case, these are both lines retrieving /examples/servlets/servlet/HelloWorldExample. The first one 200-500 ms duration, the second one much faster. In the 12 lines case, there's only the slow line, the second fast line is missing.

I have a full log with log level FINE for a good and a bad case. The first lines until

StandardWrapper.allocate Allocating non-STM instance

are the same.

Then the good case:

Time Thread Message
.296 exec-7 process Socket: Status in: [OPEN_READ], State out: [OPEN]
.341 exec-9 process Socket: Status in: [OPEN_READ], State out: [LONG]
.346 exec-10 parseRequestLine
.370 exec-10 process Socket: Status in: [OPEN_READ], State out: [OPEN]
.386 exec-1 parseRequestLine

and the bad case:

Time Thread Message
.213 exec-7 process Socket: Status in: [OPEN_READ], State out: [OPEN]
.248 exec-9 parseRequestLine
.270 exec-9 process Socket: Status in: [OPEN_READ], State out: [OPEN]
.340 exec-10 process Socket: Status in: [OPEN_READ], State out: [LONG]
hang

Looking at more cases, it seems the occurrence of the LONG state can vary depending on exact timing and also the order in the log might not always be the order of thing happening.

Here are more complete log snippets:

Good case:

14:55:38.259 exec-5 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@1ef2ab4:SecureNio2Channel@19c57c7:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56258 remote=/127.0.0.1:56259]], Status in: [OPEN_READ], State out: [LONG] 14:55:38.264 exec-6 http11.AbstractNioInputBuffer.parseRequestLine Received [GET /tester HTTP/1.1
]
14:55:38.266 exec-6 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@1ef2ab4:SecureNio2Channel@19c57c7:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56258 remote=/127.0.0.1:56259]], Status in: [OPEN_READ], State out: [LONG] 14:55:38.288 exec-7 org.apache.tomcat.util.http.Parameters.setQueryStringEncoding Set query string encoding to UTF-8 14:55:38.289 exec-7 CoyoteAdapter.parsePathParameters The variable [uriBC] has value [/tester] 14:55:38.290 exec-7 CoyoteAdapter.parsePathParameters The variable [semicolon] has value [-1] 14:55:38.290 exec-7 CoyoteAdapter.parsePathParameters The variable [enc] has value [utf-8] 14:55:38.291 exec-7 realm.RealmBase.findSecurityConstraints No applicable constraints defined 14:55:38.292 exec-7 core.StandardWrapper.allocate Allocating non-STM instance 14:55:38.296 exec-7 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@1ef2ab4:SecureNio2Channel@19c57c7:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56258 remote=/127.0.0.1:56259]], Status in: [OPEN_READ], State out: [OPEN] 14:55:38.341 exec-9 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@1ef2ab4:SecureNio2Channel@19c57c7:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56258 remote=/127.0.0.1:56259]], Status in: [OPEN_READ], State out: [LONG] 14:55:38.346 exec-10 http11.AbstractNioInputBuffer.parseRequestLine Received [GET /tester HTTP/1.1
Host: localhost
Connection: Keep-Alive

]
14:55:38.348 exec-10 CoyoteAdapter.parsePathParameters The variable [uriBC] has value [/tester] 14:55:38.348 exec-10 CoyoteAdapter.parsePathParameters The variable [semicolon] has value [-1] 14:55:38.348 exec-10 CoyoteAdapter.parsePathParameters The variable [enc] has value [utf-8] 14:55:38.349 exec-10 realm.RealmBase.findSecurityConstraints No applicable constraints defined 14:55:38.370 exec-10 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@1ef2ab4:SecureNio2Channel@19c57c7:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56258 remote=/127.0.0.1:56259]], Status in: [OPEN_READ], State out: [OPEN] 14:55:38.386 exec-1 http11.AbstractNioInputBuffer.parseRequestLine Received [GET /tester HTTP/1.1
Host: localhost
Connection: Keep-Alive

]
14:55:38.387 exec-1 CoyoteAdapter.parsePathParameters The variable [uriBC] has value [/tester] 14:55:38.387 exec-1 CoyoteAdapter.parsePathParameters The variable [semicolon] has value [-1] 14:55:38.388 exec-1 CoyoteAdapter.parsePathParameters The variable [enc] has value [utf-8] 14:55:38.388 exec-1 realm.RealmBase.findSecurityConstraints No applicable constraints defined


Bad case:

14:48:35.193 exec-5 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@90b907:SecureNio2Channel@11ae512:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56236 remote=/127.0.0.1:56237]], Status in: [OPEN_READ], State out: [LONG] 14:48:35.197 exec-6 http11.AbstractNioInputBuffer.parseRequestLine Received [GET /tester HTTP/1.1
]
14:48:35.198 exec-6 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@90b907:SecureNio2Channel@11ae512:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56236 remote=/127.0.0.1:56237]], Status in: [OPEN_READ], State out: [LONG] 14:48:35.205 exec-7 org.apache.tomcat.util.http.Parameters.setQueryStringEncoding Set query string encoding to UTF-8 14:48:35.206 exec-7 CoyoteAdapter.parsePathParameters The variable [uriBC] has value [/tester] 14:48:35.206 exec-7 CoyoteAdapter.parsePathParameters The variable [semicolon] has value [-1] 14:48:35.206 exec-7 CoyoteAdapter.parsePathParameters The variable [enc] has value [utf-8] 14:48:35.208 exec-7 realm.RealmBase.findSecurityConstraints No applicable constraints defined 14:48:35.208 exec-7 core.StandardWrapper.allocate Allocating non-STM instance 14:48:35.213 exec-7 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@90b907:SecureNio2Channel@11ae512:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56236 remote=/127.0.0.1:56237]], Status in: [OPEN_READ], State out: [OPEN] 14:48:35.248 exec-9 http11.AbstractNioInputBuffer.parseRequestLine Received [GET /tester HTTP/1.1
Host: localhost
Connection: Keep-Alive

]
14:48:35.249 exec-9 CoyoteAdapter.parsePathParameters The variable [uriBC] has value [/tester] 14:48:35.250 exec-9 CoyoteAdapter.parsePathParameters The variable [semicolon] has value [-1] 14:48:35.250 exec-9 CoyoteAdapter.parsePathParameters The variable [enc] has value [utf-8] 14:48:35.251 exec-9 realm.RealmBase.findSecurityConstraints No applicable constraints defined 14:48:35.270 exec-9 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@90b907:SecureNio2Channel@11ae512:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56236 remote=/127.0.0.1:56237]], Status in: [OPEN_READ], State out: [OPEN] 14:48:35.340 exec-10 AbstractProtocol$AbstractConnectionHandler.process Socket: [Nio2Endpoint$Nio2SocketWrapper@90b907:SecureNio2Channel@11ae512:sun.nio.ch.UnixAsynchronousSocketChannelImpl[connected local=/127.0.0.1:56236 remote=/127.0.0.1:56237]], Status in: [OPEN_READ], State out: [LONG]

then hangs.

Regards,

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to