-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Andreas,
On 9/17/16 11:55 AM, Andreas Røsdal wrote: > Freeciv-web runs Tomcat on https://play.freeciv.org/ and I have > some questions about some error messages that I get in the Tomcat > logs. (Cool! I had never heard of freeciv-web. "No more turns.... no more turns... no more turns! :) > I recently upgraded from Tomcat 8.0.37 to Tomcat 8.5.5. I think > that there are some stability issues which came as a result of the > upgrade to Tomcat 8.5.5. > > The source code of the Java web application can be found here: > https://github.com/freeciv/freeciv-web/tree/develop/freeciv-web > > Nginx runs in front of Tomcat as a HTTP 2 proxy. > > Server version: Apache Tomcat/8.5.5 Server built: > Aug 31 2016 19:51:16 UTC Server number: 8.5.5.0 OS Name: > Linux OS Version: 4.4.0-36-generic Architecture: > amd64 Java Home: /opt/jdk/jdk1.8.0_73/jre JVM Version: > 1.8.0_73-b02 JVM Vendor: Oracle Corporation > > > These are some of the errors that I see in the Tomcat logs: > > 17-Sep-2016 17:44:27.241 INFO [http-nio-8080-exec-10] > org.apache.coyote.http11.Http11Processor.service Error parsing HTTP > request header Note: further occurrences of HTTP header parsing > errors will be logged at DEBUG level. > java.lang.IllegalArgumentException: Invalid character found in > method name. HTTP method names must be tokens at > org.apache.coyote.http11.Http11InputBuffer.parseRequestLine( > Http11InputBuffer.java:462) at > org.apache.coyote.http11.Http11Processor.service( > Http11Processor.java:667) at > org.apache.coyote.AbstractProcessorLight.process( > AbstractProcessorLight.java:66) at > org.apache.coyote.AbstractProtocol$ConnectionHandler.process( > AbstractProtocol.java:802) at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1410) at > org.apache.tomcat.util.net.SocketProcessorBase.run( > SocketProcessorBase.java:49) at > java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) at > java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( > TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) This looks like a client error. Can you get a byte-level protocol trace of the request/response? > java.lang.NullPointerException at > org.apache.coyote.http11.Http11OutputBuffer.commit( > Http11OutputBuffer.java:332) at > org.apache.coyote.http11.Http11Processor.prepareResponse( > Http11Processor.java:1288) at > org.apache.coyote.AbstractProcessor.action( > AbstractProcessor.java:261) at > org.apache.coyote.http11.Http11Processor.endRequest( > Http11Processor.java:1457) at > org.apache.coyote.http11.Http11Processor.service( > Http11Processor.java:823) at > org.apache.coyote.AbstractProcessorLight.process( > AbstractProcessorLight.java:66) at > org.apache.coyote.AbstractProtocol$ConnectionHandler.process( > AbstractProtocol.java:802) at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1410) at > org.apache.tomcat.util.net.SocketProcessorBase.run( > SocketProcessorBase.java:49) at > java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) at > java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( > TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) That error is that the socketWrapper object is null. :( http://svn.apache.org/viewvc/tomcat/tc8.5.x/tags/TOMCAT_8_5_5/java/org/a pache/coyote/http11/Http11OutputBuffer.java?revision=1758670&view=markup #l332 Looks like the response object or facade has been trashed. > 17-Sep-2016 17:45:17.466 SEVERE [http-nio-8080-exec-20] > org.apache.coyote.http11.Http11Processor.service Error processing > request java.lang.NullPointerException at > org.apache.catalina.connector.CoyoteAdapter.service( > CoyoteAdapter.java:389) at > org.apache.coyote.http11.Http11Processor.service( > Http11Processor.java:784) at > org.apache.coyote.AbstractProcessorLight.process( > AbstractProcessorLight.java:66) at > org.apache.coyote.AbstractProtocol$ConnectionHandler.process( > AbstractProtocol.java:802) at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1410) at > org.apache.tomcat.util.net.SocketProcessorBase.run( > SocketProcessorBase.java:49) at > java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) at > java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( > TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Any of the request, its mapping data, or the context it was mapped to has been trashed. http://svn.apache.org/viewvc/tomcat/tc8.5.x/tags/TOMCAT_8_5_5/java/org/a pache/catalina/connector/CoyoteAdapter.java?revision=1758670&view=markup #l389 > 17-Sep-2016 17:45:17.467 SEVERE [http-nio-8080-exec-20] > org.apache.coyote.http11.Http11Processor.endRequest Error finishing > response java.lang.NullPointerException at > org.apache.coyote.http11.Http11OutputBuffer.flushBuffer( > Http11OutputBuffer.java:514) at > org.apache.coyote.http11.Http11OutputBuffer.finishResponse( > Http11OutputBuffer.java:301) at > org.apache.coyote.http11.Http11Processor.endRequest( > Http11Processor.java:1458) at > org.apache.coyote.http11.Http11Processor.service( > Http11Processor.java:823) at > org.apache.coyote.AbstractProcessorLight.process( > AbstractProcessorLight.java:66) at > org.apache.coyote.AbstractProtocol$ConnectionHandler.process( > AbstractProtocol.java:802) at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1410) at > org.apache.tomcat.util.net.SocketProcessorBase.run( > SocketProcessorBase.java:49) at > java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) at > java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run( > TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) http://svn.apache.org/viewvc/tomcat/tc8.5.x/tags/TOMCAT_8_5_5/java/org/a pache/coyote/http11/Http11OutputBuffer.java?revision=1758670&view=markup #l514 Again, the socketWrapper is null. > Any advice about what could cause these errors? My first guess, without reading the source, would be that the application is storing request and/or response objects past their validity periods. That first error might be due to an incoming request being trashed by another thread retaining a reference to that request, and recycling it at an inopportune moment. - -chris -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIcBAEBCAAGBQJX3XVAAAoJEBzwKT+lPKRYUsMQALPykd58TQrAE2vuOHRGkG9G PAO+m9WUyHiI7PnsHFQeVTE2gQv5Lea3WlmI1YMw1l1ScLOMv7GCP7oDSFv3sGIu zHe6pEz34LaMcUroKZPOFvjC8Rw4WDZ7hqfkovaSS25TJY8SGI/VqZlfLFWn9UdJ EN3gNOMHwwAsk9PS0auwSCP4VmOwXGLpxnQCpde9ZA2GNxVyaLSo/KeFIUzjAIej lx9+ZisEb2i2jAknw4EtwYlmcMXVQmVry2JK9brrr4xLTGs5tnfhBQnZ6g0RaDXU qKbwVskaarRQsXkzi3uI1Sk7ZCKoDqR1eSWFjdGOT4PqV65piEW0GJYp82ihRd0Y CEm0JUAUWg1KPh2/69Z7r6S8UZTXuXIj8tUxYWf+W3FRfU0d9rKEXH+YJ9nDrCPu WMM8bMFTvwP8Z152+Suiu+BnWUdu07OzONpwY26JWTgfY5rB17p7CUzxeWCFT+tA +ETENPYA6t04JDBL2udYDLyue7+72e/lwr9Ka1YHiF7wHqDCndOh/C++/6H7tOsb 2rA6XaGUeU/mkLHT8O6OLrtcSiigLJVqk6bpFBVI6gW1xROtVWMIPm34xtGBC/A5 WWm0ZoH+dkuVgalVLn1j+7UTbUPhbvdHsPqQPgo5jFcIbcQpbL14zL5o73GoBIQW z0QCSeYnbUJ+TiLV/eMq =X47g -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org