[ 
https://issues.apache.org/jira/browse/SOLR-18628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrzej Bialecki updated SOLR-18628:
------------------------------------
    Affects Version/s: 10.0

> HttpJdkSolrClient streamed update fails after idle h2c connection expiry
> ------------------------------------------------------------------------
>
>                 Key: SOLR-18628
>                 URL: https://issues.apache.org/jira/browse/SOLR-18628
>             Project: Solr
>          Issue Type: Bug
>    Affects Versions: 10.0
>            Reporter: Nick Shanin
>            Priority: Major
>
> Environment
> - Solr/SolrJ 10.0.0
> - Java 25
> - Plain HTTP with h2c
> Reproduction reported by a user
> 1. Create one HttpJdkSolrClient.
> 2. Add a document successfully.
> 3. Wait 35 seconds without client requests.
> 4. Add a second document with the same client.
> The second update fails with `java.io.IOException: RST_STREAM received 
> Protocol error`. Server diagnostics reportedly show `RST_STREAM` followed by 
> `GOAWAY` with `invalid_preface`. The same sequence succeeds when HTTP/1.1 is 
> forced or the idle interval is reduced to 3 seconds.
> Standalone reproducer: https://github.com/micopiira/solrj-h2c-idle-reproducer
> Mailing-list report: 
> https://www.mail-archive.com/users%40solr.apache.org/msg09633.html
> Candidate mechanism to verify (not yet confirmed): on current main, 
> `HttpJdkSolrClient.preparePutOrPost` calls `maybeTryHeadRequest` before 
> streaming a `RequestWriter.ContentWriter` body. A successful HEAD capability 
> probe is cached by base URI for the client lifetime. If the underlying 
> cleartext HTTP/2 connection expires while idle, a later streamed POST may 
> need to establish h2c again and may encounter the JDK client's 
> upgrade-with-streamed-body behavior that Jetty rejects.
> Requested investigation
> - Add a focused SolrJ regression test or adapt the standalone reproducer so 
> idle connection expiry is deterministic and the second update succeeds.
> - Confirm the failure on the unmodified code and exercise the HTTP/1.1 and 
> short-idle controls.
> - Test a narrow fix only after the fail-before case is established; preserve 
> HTTPS behavior and document any HTTP/2 or request-overhead tradeoff.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to