Hi there,
I've a tomcat 9.0.91 server (running on Corretto OpenJDK 17.0.12.7.1 +
Amazon Linux 2023). It runs behind nginx (v1.24.0).
The catalina log records a NPE SEVERE error every few seconds,
complaining that the Host used in the getClientIdentifier method within
the CrawlerSessionManagerValve is null. Full stack trace is:
10-Oct-2024 10:47:35.297 SEVERE [http-nio-8080-exec-5]
org.apache.coyote.http11.Http11Processor.service Error processing request
java.lang.NullPointerException: Cannot invoke
"org.apache.catalina.Host.getName()" because "host" is null
at
org.apache.catalina.valves.CrawlerSessionManagerValve.getClientIdentifier(CrawlerSessionManagerValve.java:264)
at
org.apache.catalina.valves.CrawlerSessionManagerValve.invoke(CrawlerSessionManagerValve.java:181)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:388)
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:936)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
at java.base/java.lang.Thread.run(Thread.java:840)
No doubt this is due to my own misconfiguration somewhere, but I'm not
sure what to change to fix it. The server.xml has two <Host> directives,
as follows (domain changed for privacy):
<Host name="dev.mysite.com" appBase="webapps" unpackWARs="true"
autoDeploy="true">
<Alias>devnew.mysite.com</Alias>
<Valve className="org.apache.catalina.valves.RemoteIpValve"
protocolHeader="X-Forwarded-Proto"/>
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="dev_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"
rotatable="false" requestAttributesEnabled="true"/>
</Host>
<Host name="dev2.mysite.cin" appBase="/usr/local/tomcat/webapps2"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
protocolHeader="X-Forwarded-Proto"/>
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="dev2_access_log" suffix=".log"
pattern="%h %l %u %t "%r" %s %b"
rotatable="false" requestAttributesEnabled="true"/>
</Host>
Acting on a hint in another forum post I tried turning sendFile off on
the <Connector> (so it now looks like this):
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" compression="off"
redirectPort="443" proxyPort="80" secure="true"
URIEncoding="UTF-8" useSendfile="false"
maxParameterCount="1000" />
This had no effect other than (seemingly) to cause a fuller stack trace
to be generated in the error log.
The site appears to function normally, and serves content as it should,
despite the error message. It is however a concern to me that perhaps
some users (or bots?) *are* seeing errors.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org