Am 02.02.2016 um 01:20 schrieb Mark Thomas:
The proposed Apache Tomcat 9.0.0.M3 release is now available for voting.
This is a milestone release for the 9.0.x branch. It should be
noted that, as a milestone release:
- Servlet 4.0 is not finalised
- The EGs have not started work on JSP 2.4, EL 3.1 or WebSocket 1.2/2.0
The major changes compared to the 9.0.0.M1 branch are:
- Ability to use OpenSSL with JSSE configuration
- Update to Tomcat-native 1.2.4 to pick up Windows binaries based on
OpenSSL 1.0.2e
- Allow HTTP redirects to be relative
- Lots of bug fixes
For full details, see the changelog:
http://svn.us.apache.org/repos/asf/tomcat/trunk/webapps/docs/changelog.xml
It can be obtained from:
https://dist.apache.org/repos/dist/dev/tomcat/tomcat-9/v9.0.0.M3/
The Maven staging repo is:
https://repository.apache.org/content/repositories/orgapachetomcat-1062/
The svn tag is:
http://svn.apache.org/repos/asf/tomcat/tags/TOMCAT_9_0_0_M3/
The proposed 9.0.0.M3 release is:
[ ] Broken - do not release
[X] Alpha - go ahead and release as 9.0.0.M3
+1 to release as alpha.
One interesting new observation is removed attributes "servlets" and
"deploymentDescriptor" from Webapp MBeans. Not sure this was
intentional. See also below for some changes in unit test output.
Details
=======
- MD5 OK
- signatures OK
- key in KEYS file
- gz and zip for src and bin consistent
- src completely consistent with svn tag
- builds fine
- build result looks consistent with binaries
- no checkstyle complaints
- no Javadoc warnings
- Unit tests: one failures in NIO test
- org.apache.tomcat.websocket.server.TestClose
- probably fixed by r1728137
- Details see below
- JMX MBean Comparison:
- Servlet and Webapp MBeans removed attributes:
- stateManageable
- Webapp MBeans removed attributes:
- servlets (was array with list of servlet MBean names)
- deploymentDescriptor
- not sure that these removals are intentional
- OperatingSystem MBean
- OpenFileDescriptorCount 83 (-2)
- in the usual range of variation
- AJP Connector and ProtocolHandler MBeans new attribute
- ajpFlush true
- expected
- WebResourceRoot Cache MBeans
- for manager and examples the values for
lookupCount and hitCount decreased by 1.
Build and tests were done using Java 1.8.0_72. OS was Solaris 10 Sparc,
tcnative was 1.2.4 based on APR 1.5.1 and OpenSSL 1.0.2f.
Unit test observations:
- in the message
"org.apache.catalina.core.TestStandardContextResources.testResources
testResources(): orderedLibs:" the value after the message has changed
from "[classes, resources.jar, resources2.jar]" in M1 to
"[resources.jar, classes, resources2.jar]" in M2 and M3
- in org.apache.catalina.valves.TestStuckThreadDetectionValve in test
testDetection, after the correct message from notifyStuckThreadDetected
and the following org.apache.coyote.AbstractProtocol.pause, I get a
notifyStuckThreadCompleted message, which normally oesn't show up.
Probably just a timing issue, that the Valve ran between the pause and
the complete shutdown.
- new WARNINGs since M2:
2 x
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doClientAuth
http11processor.socket.sslreneg
25 x org.apache.tomcat.util.net.SSLUtilBase.getEnabled Some of the
specified [protocols] are not supported by the SSL engine and have been
skipped: [[SSLv2Hello]]
3 x org.apache.tomcat.util.scan.StandardJarScanner.scan Failed to scan
[http://felix.extensions:9/] from classloader hierarchy, plus Caused by:
java.lang.IllegalArgumentException: URI scheme is not "file"
3 x org.apache.catalina.startup.ContextConfig.validateSecurityRoles
Security role name foo used in an <auth-constraint> without being
defined in a <security-role>
- Since M2 testConnectToServerEndpoint no longer logs
"org.apache.tomcat.websocket.WsSession.doClose Failed to flush batched
messages on session close"
- message org.apache.tomcat.util.modeler.Registry.unregisterComponent
Error unregistering mbean appears in varying numbers. Always combined with
[junit] javax.management.RuntimeOperationsException: Object name
cannot be null
[junit] at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.isRegistered(DefaultMBeanServerInterceptor.java:569)
[junit] at
com.sun.jmx.mbeanserver.JmxMBeanServer.isRegistered(JmxMBeanServer.java:638)
[junit] at
org.apache.tomcat.util.modeler.Registry.unregisterComponent(Registry.java:421)
[junit] at
org.apache.coyote.AbstractProtocol$ConnectionHandler.unregister(AbstractProtocol.java:984)
[junit] at
org.apache.coyote.AbstractProtocol$RecycledProcessors.clear(AbstractProtocol.java:1051)
[junit] at
org.apache.coyote.AbstractProtocol$ConnectionHandler.recycle(AbstractProtocol.java:692)
and "Caused by: java.lang.IllegalArgumentException: Object name cannot
be null".
In most cases, shortly before there was already a NullPointerException
like this:
[junit] 03-Feb-2016 12:06:33.554 SEVERE
[http-nio-127.0.0.1-auto-9-exec-1]
org.apache.coyote.http11.Http11Processor.endRequest Error finishing response
[junit] java.lang.NullPointerException
[junit] at
org.apache.coyote.http11.Http11OutputBuffer.commit(Http11OutputBuffer.java:351)
[junit] at
org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:646)
[junit] at
org.apache.coyote.http11.Http11Processor.endRequest(Http11Processor.java:1770)
[junit] at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1119)
[junit] at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
[junit] at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:760)
sometimes in combination with
[junit] 03-Feb-2016 12:08:49.058 SEVERE
[http-nio-127.0.0.1-auto-16-exec-1]
org.apache.coyote.http11.Http11Processor.service Error processing request
[junit] java.lang.NullPointerException
[junit] at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:375)
[junit] at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1078)
[junit] at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
[junit] at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:760)
(then that one comes first)
- Test testHeaderLimits3 since M3 logs a stack in addition to the
previous message:
[junit] 03-Feb-2016 12:17:00.471 INFO
[http-nio-127.0.0.1-auto-3-exec-1]
org.apache.coyote.http11.Http11Processor.service Error parsing HTTP
request header
[junit] Note: further occurrences of HTTP header parsing errors
will be logged at DEBUG level.
[junit] java.lang.IllegalStateException: More than the maximum
allowed number of headers ([100]) were detected.
[junit] at
org.apache.tomcat.util.http.MimeHeaders.createHeader(MimeHeaders.java:260)
[junit] at
org.apache.tomcat.util.http.MimeHeaders.addValue(MimeHeaders.java:305)
[junit] at
org.apache.coyote.http11.Http11InputBuffer.parseHeader(Http11InputBuffer.java:802)
[junit] at
org.apache.coyote.http11.Http11InputBuffer.parseHeaders(Http11InputBuffer.java:579)
[junit] at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:978)
[junit] at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
[junit] at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:760)
[junit] at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1524)
[junit] at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[junit] at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[junit] at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[junit] at java.lang.Thread.run(Thread.java:745)
- lots of new "Broken pipe"
- most of them in org.apache.tomcat.websocket.server.TestClose, but
that one fails, see below
- other known occurrences are now often logged twice:
[junit] 03-Feb-2016 11:45:29.837 INFO
[http-nio-127.0.0.1-auto-4-exec-1]
org.apache.catalina.nonblocking.TestNonBlockingAPI$TestReadListener.onError
ReadListener.onError
[junit] java.io.IOException: Broken pipe
[junit] at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
[junit] at
sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
[junit] at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
[junit] at sun.nio.ch.IOUtil.write(IOUtil.java:65)
[junit] at
sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
[junit] at
org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
[junit] at
org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:168)
[junit] at
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWriteInternal(NioEndpoint.java:1296)
[junit] at
org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:477)
[junit] at
org.apache.tomcat.util.net.SocketWrapperBase.flushNonBlocking(SocketWrapperBase.java:442)
[junit] at
org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:408)
[junit] at
org.apache.coyote.http11.Http11OutputBuffer.flushBuffer(Http11OutputBuffer.java:533)
[junit] at
org.apache.coyote.http11.Http11Processor.flushBufferedWrite(Http11Processor.java:1683)
[junit] at
org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:186)
[junit] at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
[junit] at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:760)
[junit] at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1524)
[junit] at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[junit] at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[junit] at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[junit] at java.lang.Thread.run(Thread.java:745)
[junit] 03-Feb-2016 11:45:29.843 INFO
[http-nio-127.0.0.1-auto-4-exec-1]
org.apache.catalina.nonblocking.TestNonBlockingAPI$TestWriteListener.onError
WriteListener.onError
[junit] java.io.IOException: Broken pipe
[junit] at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
[junit] at
sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
[junit] at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
[junit] at sun.nio.ch.IOUtil.write(IOUtil.java:65)
[junit] at
sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
[junit] at
org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
[junit] at
org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:168)
[junit] at
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWriteInternal(NioEndpoint.java:1296)
[junit] at
org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:477)
[junit] at
org.apache.tomcat.util.net.SocketWrapperBase.flushNonBlocking(SocketWrapperBase.java:442)
[junit] at
org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:408)
[junit] at
org.apache.coyote.http11.Http11OutputBuffer.flushBuffer(Http11OutputBuffer.java:533)
[junit] at
org.apache.coyote.http11.Http11Processor.flushBufferedWrite(Http11Processor.java:1683)
[junit] at
org.apache.coyote.AbstractProcessor.dispatch(AbstractProcessor.java:186)
[junit] at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53)
[junit] at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:760)
[junit] at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1524)
[junit] at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[junit] at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[junit] at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[junit] at java.lang.Thread.run(Thread.java:745)
- in org.apache.coyote.http2.TestHttp2Section_3_2 for NIO in test
testConnectionNoPreface:
[junit] 03-Feb-2016 11:59:45.653 INFO [main]
org.apache.catalina.core.StandardService.stopInternal Stopping service
Tomcat
[junit] 03-Feb-2016 11:59:45.681 INFO [main]
org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler
["http-nio-127.0.0.1-auto-7-59425"]
[junit] 03-Feb-2016 11:59:45.704 SEVERE
[http-nio-127.0.0.1-auto-7-exec-1]
org.apache.coyote.AbstractProtocol$ConnectionHandler.process Error
reading request, ignored
[junit] java.nio.channels.CancelledKeyException
[junit] at
sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:73)
[junit] at
sun.nio.ch.SelectionKeyImpl.interestOps(SelectionKeyImpl.java:82)
[junit] at
org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:260)
[junit] at
org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:216)
[junit] at
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1267)
[junit] at
org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1221)
[junit] at
org.apache.coyote.http2.Http2UpgradeHandler.fill(Http2UpgradeHandler.java:1065)
[junit] at
org.apache.coyote.http2.Http2Parser$Input.fill(Http2Parser.java:560)
[junit] at
org.apache.coyote.http2.Http2Parser.readConnectionPreface(Http2Parser.java:519)
[junit] at
org.apache.coyote.http2.Http2UpgradeHandler.init(Http2UpgradeHandler.java:226)
[junit] at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:784)
[junit] at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1524)
[junit] at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[junit] at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[junit] at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[junit] at java.lang.Thread.run(Thread.java:745)
[junit]
- the only unit test failures is
org.apache.tomcat.websocket.server.TestClose for NIO:
Testcase: testTcpCloseInOnMessage took 6.934 sec
Testcase: testWsCloseThenTcpCloseWhenOnMessageSends took 0.791 sec
Testcase: testTcpCloseWhenOnMessageSends took 0.241 sec
Testcase: testWsCloseThenTcpClose took 0.246 sec
Testcase: testWsCloseThenTcpReset took 0.227 sec
Testcase: testWsCloseThenTcpResetWhenOnMessageSends took 0.292 sec
Testcase: testTcpResetWhenOnMessageSends took 0.26 sec
FAILED
expected:<class java.io.IOException> but was:<class
java.nio.channels.ClosedChannelException>
junit.framework.AssertionFailedError: expected:<class
java.io.IOException> but was:<class
java.nio.channels.ClosedChannelException>
at
org.apache.tomcat.websocket.server.TestClose.awaitOnError(TestClose.java:110)
at
org.apache.tomcat.websocket.server.TestClose.testTcpResetInOnMessage(TestClose.java:217)
at
org.apache.tomcat.websocket.server.TestClose.testTcpResetWhenOnMessageSends(TestClose.java:232)
Testcase: testTcpResetInOnMessage took 0.376 sec
Testcase: testTcpClose took 0.373 sec
Testcase: testTcpReset took 0.214 sec
Probably fixed by r1728137.
Thanks as always and regards,
Rainer
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org