Hi user group:

I added some debug info to the 9.0.71 baseline

from the logs it hit this (supposed not inn 9.0.70)
https://github.com/apache/tomcat/blob/9.0.71/java/org/apache/catalina/connector/CoyoteAdapter.java#L677

means undecodedURI type is T_CHARS or T_STR, however, decodedURI type is
T_NULL at this time,
so decodedURI.toChars();  actually will recycle its buffer.

I can reproduce it locally with debug mode, but don't know how reproduce it
in the company EKS cluster

thanks.
Zhou Rui



On Fri, 17 Mar 2023 at 00:50, Rui <wireles...@gmail.com> wrote:

> I did some tests with several different commits in 9.0.71, I think my
> issue is caused by this
>
> https://github.com/apache/tomcat/commit/10a1a6d46d952bab4dfde44c3c0de12b0330da79
> the "toBytesSimple" change has not been added to the repo yet, so the
> change in 9.073 doesn't solve the problem.
> Next I will go through these codes, but any clue?
>
> thanks
> Zhou Rui
>
>
> On Tue, 7 Mar 2023 at 00:34, Mark Thomas <ma...@apache.org> wrote:
>
>> On 25/02/2023 17:57, Mark Thomas wrote:
>> >
>> >
>> > On 25/02/2023 15:47, Rui wrote:
>> >> Hi
>> >> recently upgraded tomcat to 9.0.71 from 9.0.70
>> >> but saw 404 in our EKS cluster(with istio installed)
>> >>
>> >> Received [GET /actuator HTTP/1.1
>> >> Host: xxxxx:8079
>> >> User-Agent: kube-probe/1.23+
>> >> Accept: */*
>> >> Connection: close
>> >> Accept-Encoding: gzip
>> >> ]
>> >> Incoming request /health with originalRemoteAddr xxxx
>> >>
>> >> in 9.0.70 I can see the below following message but not in 9.0.71
>> >> o.a.c.authenticator.AuthenticatorBase    : Security checking request
>> GET
>> >> /health
>> >>
>> >> seems the processing has stopped somewhere and the pod health check
>> >> didn't
>> >> pass.
>> >>
>> >> I also noticed there was also a 404 issue but don't know if it is
>> >> relevant.
>> >> https://lists.apache.org/thread/gr814rmrlbk9rrqxqjrh4p3x0bfvv1g9
>> >>
>> >> I have tested it locally with curl or jmeter, but can't reproduce
>> >> the problem.
>> >>
>> >> but when I step by step debug the spring app, I found the undecodedURI
>> >> type
>> >> is T_STR
>> >> in CoyoteAdapter.java(in 70 it supposed to be T_BYTES), then
>> >> decodedURI is
>> >> uninitialized and the uri can't find the mapping in internalMap of
>> >> Mapper.java, which will cause 404(guess it thinks the uri is malformed)
>> >>
>> >> MessageBytes decodedURI = req.decodedURI();
>> >>
>> >> if (undecodedURI.getType() == MessageBytes.T_BYTES) {
>> >>      // Copy the raw URI to the decodedURI
>> >>      decodedURI.duplicate(undecodedURI);
>> >>
>> >>
>> >> 404 example: (when I debug step by step to check unndecodedURI)
>> >>
>> >> curl http://localhost:8080/actuator
>> >>
>> >> <!doctype html><html lang="en"><head><title>HTTP Status 404 – Not
>> >> Found</title><style type="text/css">body
>> >> {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b
>> >> {color:white;background-color:#525D76;} h1 {font-size:22px;} h2
>> >> {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a
>> >> {color:black;}
>> >> .line
>> >>
>> {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP
>> >> Status 404 – Not Found</h1></body></html>%
>> >>
>> >>
>> >> However, it runs well without breakpoint! I am quite confused...my
>> >> intellij
>> >> has problem?
>> >> but anyway, summary:
>> >>   9.0.69 and 70 are good in the AWS/EKS(kubernetes) cluster with istio
>> >> 9.0.71 and 72 return 404 when health check by the EKS cluster.
>> >
>> > Looks like an instance of:
>> > https://bz.apache.org/bugzilla/show_bug.cgi?id=66488
>>
>> If not that then maybe
>>
>> https://bz.apache.org/bugzilla/show_bug.cgi?id=66512
>>
>> Mark
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>

Reply via email to