On 17/02/2020 20:17, Michael Osipov wrote:
> I have continued some tests on 8.5.51 with PUT requests and Expect: 100
> continue header from HttpClient 5.0.
>
> I have noticed that the very same code code fragment
What code fragment?
> kicks in in the
> expect header evaluation when run as valve, but completely ignored when
> run in a filter. Tomcat will simply signal the client to continue with
> the request.
>
> Valve:
>> [main] DEBUG org.apache.http.impl.execchain.MainClientExec - Proxy
>> auth state: UNCHALLENGED
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 >> PUT
>> /bb/repo/my.file HTTP/1.1
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 >>
>> Content-Length: 15
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Host:
>> localhost:8080
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Connection:
>> Keep-Alive
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 >> User-Agent:
>> Apache-HttpClient/4.5.11 (Java/1.7.0_252)
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 >> Expect:
>> 100-continue
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 >>
>> Accept-Encoding: gzip,deflate
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "PUT
>> /bb/repo/my.file HTTP/1.1[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 >>
>> "Content-Length: 15[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Host:
>> localhost:8080[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Connection:
>> Keep-Alive[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "User-Agent:
>> Apache-HttpClient/4.5.11 (Java/1.7.0_252)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "Expect:
>> 100-continue[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 >>
>> "Accept-Encoding: gzip,deflate[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 >> "[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 << "HTTP/1.1 307
>> [\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Location:
>> /bb/redirected/repo/my.file[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 <<
>> "Content-Length: 0[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Date: Mon, 17
>> Feb 2020 20:11:54 GMT[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 << "Connection:
>> close[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-0 << "[\r][\n]"
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 << HTTP/1.1 307
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 << Location:
>> /bb/redirected/repo/my.file
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 <<
>> Content-Length: 0
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 << Date: Mon,
>> 17 Feb 2020 20:11:54 GMT
>> [main] DEBUG org.apache.http.headers - http-outgoing-0 << Connection:
>> close
>> [main] DEBUG
>> org.apache.http.impl.conn.DefaultManagedHttpClientConnection -
>> http-outgoing-0: Close connection
>> [main] DEBUG org.apache.http.impl.execchain.MainClientExec -
>> Connection discarded
>> [main] DEBUG
>> org.apache.http.impl.conn.PoolingHttpClientConnectionManager -
>> Connection released: [id: 0][route: {}->http://localhost:8080][total
>> available: 0; route allocated: 0 of 2; total allocated: 0 of 20]
>> [main] DEBUG org.apache.http.impl.execchain.RedirectExec - Redirecting
>> to 'http://localhost:8080/bb/redirected/repo/my.file' via
>> {}->http://localhost:8080
>> [main] DEBUG org.apache.http.client.protocol.RequestAddCookies -
>> CookieSpec selected: default
>> [main] DEBUG org.apache.http.client.protocol.RequestAuthCache - Auth
>> cache not set in the context
>> [main] DEBUG
>> org.apache.http.impl.conn.PoolingHttpClientConnectionManager -
>> Connection request: [route: {}->http://localhost:8080][total
>> available: 0; route allocated: 0 of 2; total allocated: 0 of 20]
>> [main] DEBUG
>> org.apache.http.impl.conn.PoolingHttpClientConnectionManager -
>> Connection leased: [id: 1][route: {}->http://localhost:8080][total
>> available: 0; route allocated: 1 of 2; total allocated: 1 of 20]
>> [main] DEBUG org.apache.http.impl.execchain.MainClientExec - Opening
>> connection {}->http://localhost:8080
>> [main] DEBUG
>> org.apache.http.impl.conn.DefaultHttpClientConnectionOperator -
>> Connecting to localhost/127.0.0.1:8080
>> [main] DEBUG
>> org.apache.http.impl.conn.DefaultHttpClientConnectionOperator -
>> Connection established 127.0.0.1:57395<->127.0.0.1:8080
>> [main] DEBUG org.apache.http.impl.execchain.MainClientExec - Executing
>> request PUT /bb/redirected/repo/my.file HTTP/1.1
>> [main] DEBUG org.apache.http.impl.execchain.MainClientExec - Target
>> auth state: UNCHALLENGED
>> [main] DEBUG org.apache.http.impl.execchain.MainClientExec - Proxy
>> auth state: UNCHALLENGED
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> PUT
>> /bb/redirected/repo/my.file HTTP/1.1
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >>
>> Content-Length: 15
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> Host:
>> localhost:8080
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> Connection:
>> Keep-Alive
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> User-Agent:
>> Apache-HttpClient/4.5.11 (Java/1.7.0_252)
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> Expect:
>> 100-continue
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >>
>> Accept-Encoding: gzip,deflate
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "PUT
>> /bb/redirected/repo/my.file HTTP/1.1[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >>
>> "Content-Length: 15[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Host:
>> localhost:8080[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Connection:
>> Keep-Alive[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "User-Agent:
>> Apache-HttpClient/4.5.11 (Java/1.7.0_252)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Expect:
>> 100-continue[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >>
>> "Accept-Encoding: gzip,deflate[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "HTTP/1.1 100
>> [\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "[\r][\n]"
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << HTTP/1.1 100
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "I am a checksum"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "HTTP/1.1 200
>> [\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "Content-Length: 0[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "Date: Mon, 17
>> Feb 2020 20:11:54 GMT[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "Keep-Alive:
>> timeout=20[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "Connection:
>> keep-alive[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "[\r][\n]"
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << HTTP/1.1 200
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 <<
>> Content-Length: 0
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << Date: Mon,
>> 17 Feb 2020 20:11:54 GMT
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << Keep-Alive:
>> timeout=20
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << Connection:
>> keep-alive
>
>
>
>
> Filter:
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> PUT
>> /bb/redirected/repo/my.file HTTP/1.1
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >>
>> Content-Length: 15
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> Host:
>> localhost:8080
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> Connection:
>> Keep-Alive
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> User-Agent:
>> Apache-HttpClient/4.5.11 (Java/1.7.0_252)
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >> Expect:
>> 100-continue
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 >>
>> Accept-Encoding: gzip,deflate
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "PUT
>> /bb/redirected/repo/my.file HTTP/1.1[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >>
>> "Content-Length: 15[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Host:
>> localhost:8080[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Connection:
>> Keep-Alive[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "User-Agent:
>> Apache-HttpClient/4.5.11 (Java/1.7.0_252)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "Expect:
>> 100-continue[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >>
>> "Accept-Encoding: gzip,deflate[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 >> "[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "HTTP/1.1 100
>> [\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "[\r][\n]"
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << HTTP/1.1 100
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "HTTP/1.1 500
>> [\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "Content-Type:
>> text/html;charset=utf-8[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "Content-Language: en[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "Content-Length: 3291[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "Date: Mon, 17
>> Feb 2020 20:15:15 GMT[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "Connection:
>> close[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 << "<!doctype
>> html><html lang="en"><head><title>HTTP Status 500 [0xe2][0x80][0x93]
>> Internal Server Error</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 500 [0xe2][0x80][0x93] Internal Server Error</h1><hr
>> class="line" /><p><b>Type</b> Exception Report</p><p><b>Message</b>
>> java.net.SocketTimeoutException</p><p><b>Description</b> The server
>> encountered an unexpected condition that prevented it from fulfilling
>> the
>> request.</p><p><b>Exception</b></p><pre>org.apache.catalina.connector.ClientAbortException:
>> java.net.SocketTimeoutException[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:348)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:663)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:370)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:152)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]java.nio.file.Files.copy(Files.java:2735)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]java.nio.file.Files.copy(Files.java:2854)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]aa.Test2.doPut(Test2.java:68)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]javax.servlet.http.HttpServlet.service(HttpServlet.java:663)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]javax.servlet.http.HttpServlet.service(HttpServlet.java:741)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]aa.RedirectFilter.doFilter(RedirectFilter.java:39)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "</pre><p><b>Root
>> Cause</b></p><pre>java.net.SocketTimeoutException[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.tomcat.util.net.NioBlockingSelector.read(NioBlockingSelector.java:201)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:235)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:216)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1282)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1225)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:737)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.coyote.http11.Http11InputBuffer.access$300(Http11InputBuffer.java:42)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.coyote.http11.Http11InputBuffer$SocketInputBuffer.doRead(Http11InputBuffer.java:1120)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:140)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.coyote.http11.Http11InputBuffer.doRead(Http11InputBuffer.java:262)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.coyote.Request.doRead(Request.java:581)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:344)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:663)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:370)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:152)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]java.nio.file.Files.copy(Files.java:2735)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]java.nio.file.Files.copy(Files.java:2854)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]aa.Test2.doPut(Test2.java:68)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]javax.servlet.http.HttpServlet.service(HttpServlet.java:663)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]javax.servlet.http.HttpServlet.service(HttpServlet.java:741)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]aa.RedirectFilter.doFilter(RedirectFilter.java:39)[\r][\n]"
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "[0x9]org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)[\r][\n]"
>>
>> [main] DEBUG org.apache.http.wire - http-outgoing-1 <<
>> "</pre><p><b>Note</b> The full stack trace of the root cause is
>> available in the server logs.</p><hr class="line" /><h3>Apache
>> Tomcat/8.5.51</h3></body></html>"
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << HTTP/1.1 500
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 <<
>> Content-Type: text/html;charset=utf-8
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 <<
>> Content-Language: en
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 <<
>> Content-Length: 3291
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << Date: Mon,
>> 17 Feb 2020 20:15:15 GMT
>> [main] DEBUG org.apache.http.headers - http-outgoing-1 << Connection:
>> close
>
> Is that intended?
>
> Michael
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]