Skip to content

[improve][proxy] Add regression tests for package upload with 'Expect: 100-continue'#25211

Merged
nodece merged 9 commits intoapache:masterfrom
nodece:fix-early-eof
Feb 5, 2026
Merged

[improve][proxy] Add regression tests for package upload with 'Expect: 100-continue'#25211
nodece merged 9 commits intoapache:masterfrom
nodece:fix-early-eof

Conversation

@nodece
Copy link
Copy Markdown
Member

@nodece nodece commented Feb 4, 2026

Motivation

This pull request introduces improvements and new tests for package management and proxy upload functionality in Pulsar.

Although PulsarAdmin (based on async-http-client) does not send the 'Expect: 100-continue' header by default, we observed in production that some HTTP clients (for example curl or other generic upload tools) do send this
header when uploading large packages through the Pulsar proxy.

In older Pulsar versions, such requests may lead to Early EOF issues during package uploads through the proxy. Adding coverage for this scenario helps ensure that large uploads using 'Expect: 100-continue' work reliably and
remain compatible with common HTTP clients.

Modifications

Package management improvements

  • Refactored MockedPackagesStorage.writeAsync to read input streams using a buffer and ByteArrayOutputStream, improving correctness for large files and for streams where InputStream.available() is unreliable.
  • Added MockedPackagesStorageTest to validate correct write and read behavior for large package data in the mocked storage implementation.

Proxy upload tests

  • Added a new integration test ProxyPackagesUploadTest to verify package upload and download through the Pulsar proxy and broker.
  • The test covers large file uploads and explicitly exercises requests using the 'Expect: 100-continue' header to prevent regressions related to Early EOF issues observed in production.

Codebase simplification

  • Simplified AdminProxyHandler by reusing the HTTP client configuration from the superclass and customizing only the required protocol handlers, reducing code duplication and improving maintainability.

Documentation

  • doc
  • doc-required
  • doc-not-needed
  • doc-complete

@nodece nodece requested review from Copilot and lhotari and removed request for Copilot February 4, 2026 12:34
@github-actions github-actions Bot added the doc-not-needed Your PR changes do not impact docs label Feb 4, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes proxy package uploads when clients send Expect: 100-continue by ensuring the proxy does not forward the Expect header to brokers, preventing Early EOF errors during large uploads.

Changes:

  • Add request wrapping in AdminProxyHandler to strip the Expect header when Expect: 100-continue is present.
  • Add proxy package upload/download tests, including an Expect: 100-continue scenario with a large multipart upload.
  • Improve mocked packages storage test implementation to read streams in chunks and add unit tests for large read/write correctness.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/AdminProxyHandler.java Wraps requests that use Expect: 100-continue to prevent forwarding the Expect header to brokers.
pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyPackagesUploadTest.java Adds integration coverage for uploading/downloading packages through the proxy, including Expect: 100-continue.
pulsar-proxy/pom.xml Adds pulsar-package-core test-jar dependency for proxy tests using mock package storage.
pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/MockedPackagesStorage.java Refactors mocked storage writes to read streams in buffered chunks (supports large uploads).
pulsar-package-management/core/src/test/java/org/apache/pulsar/packages/management/core/MockedPackagesStorageTest.java Adds a unit test validating mocked storage write/read correctness for large payloads.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Member

@lhotari lhotari left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Added logic in AdminProxyHandler to detect requests with the
    "Expect: 100-continue" header and wrap them using
    NoExpectRequestWrapper, ensuring the header is not forwarded to the
    broker and preventing Early EOF.
  • Introduced the NoExpectRequestWrapper inner class to filter out the
    "Expect" header from incoming requests.

I'm not sure if this is the correct approach. Expect: 100-continue is related to Transfer-Encoding: Chunked. Usually Transfer-Encoding: Chunked is used when Content-Length header isn't set due to the size of the body being unknown when the request is started.

While upgrading Jetty from 9.x to 12.x, I noticed that ProxyContinueProtocolHandler was missing from AdminProxyHandler:

protocolHandlers.put(new ProxyContinueProtocolHandler());
return client;
} catch (Exception x) {
throw new ServletException(x);
}
}
class ProxyContinueProtocolHandler extends ContinueProtocolHandler {
@Override
protected Runnable onContinue(Request request) {
HttpServletRequest clientRequest =
(HttpServletRequest) request.getAttributes().get(CLIENT_REQUEST_ATTRIBUTE);
return AdminProxyHandler.this.onContinue(clientRequest, request);
}
}

A similar change should be implemented in branch-4.1, branch-4.0 and branch-3.0 to fix the Transfer-Encoding: Chunked and Expect: 100-continue support.

In addition, if httpMaxRequestSize is set in configuration, that would block Transfer-Encoding: Chunked:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
long size = request.getContentLengthLong();
if (size > maxSize || isChunked(request)) {
// Size it's either unknown or too large
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendError(HttpServletResponse.SC_BAD_REQUEST, "Bad Request");
} else {
chain.doFilter(request, response);
}
}
private static boolean isChunked(ServletRequest request) {
if (request instanceof HttpServletRequest) {
HttpServletRequest req = (HttpServletRequest) request;
String encoding = req.getHeader("Transfer-Encoding");
return encoding != null && encoding.contains("chunked");
} else {
return false;
}
}

@lhotari
Copy link
Copy Markdown
Member

lhotari commented Feb 4, 2026

Expect: 100-continue is related to Transfer-Encoding: Chunked.

I checked this claim that I made. It's not correct.

@lhotari
Copy link
Copy Markdown
Member

lhotari commented Feb 4, 2026

  • Added logic in AdminProxyHandler to detect requests with the
    "Expect: 100-continue" header and wrap them using
    NoExpectRequestWrapper, ensuring the header is not forwarded to the
    broker and preventing Early EOF.

The reason why this doesn't make sense is that the client won't be sending a body when the request contains Expect: 100-continue. Forwarding such a request to the backend server is not useful.
I think it's better to add the continue support using protocolHandlers.put(new ProxyContinueProtocolHandler()) as mentioned in my previous comment.
An alternative approach would be to send a response with status code 100 (continue) without contacting the backend at all. The client would then send the actual request after that.

@nodece
Copy link
Copy Markdown
Member Author

nodece commented Feb 4, 2026

Both the jetty 9.x and 12.x have this issue.

@nodece
Copy link
Copy Markdown
Member Author

nodece commented Feb 4, 2026

Now, the client sent "Expect: 100-continue". Based on curl verbose output, it seems Jetty responds with "100 Continue" automatically.

@nodece
Copy link
Copy Markdown
Member Author

nodece commented Feb 4, 2026

I will try to use the ProxyContinueProtocolHandler tomorrow.

@lhotari
Copy link
Copy Markdown
Member

lhotari commented Feb 4, 2026

I will try to use the ProxyContinueProtocolHandler tomorrow.

One possible approach would be to change the createHttpClient method in org.apache.pulsar.proxy.server.AdminProxyHandler so that it calls super.createHttpClient() and then apply the customization client.getProtocolHandlers().put(new RedirectProtocolHandler(client)). I didn't spot other relevant differences. This type of change would remove the need for code duplication in AdminProxyHandler and would be useful for both Jetty 9.x and 12.x implementations.
The ProxyContinueProtocolHandler isn't visible to AdminProxyHandler and in the Jetty 12.x upgrade PR I had to copy the class to add similar logic. That wouldn't be necessary with the HttpClient client = super.createHttpClient(); client.getProtocolHandlers().put(new RedirectProtocolHandler(client)); return client implementation for createHttpClient in AdminProxyHandler.

@nodece
Copy link
Copy Markdown
Member Author

nodece commented Feb 5, 2026

Thanks for the suggestion, and I agree that this is a better and cleaner approach.

After validating the behavior with packet captures, I realized that my previous change only guarantees correct handling of Expect: 100-continue on the client → proxy hop. In that setup, Jetty on the proxy side consumes the Expect header and sends the 100 Continue response back to the client, but the proxy → broker request does not necessarily follow the same continue semantics.

Your proposal to have AdminProxyHandler#createHttpClient call super.createHttpClient() and then apply the additional customization (e.g. registering RedirectProtocolHandler) ensures that the standard Jetty ContinueProtocolHandler logic is preserved consistently. This makes the Expect: 100-continue behavior work end-to-end, including the proxy → broker hop, rather than being limited to the incoming request only.

@nodece nodece requested a review from lhotari February 5, 2026 04:15
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 8 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/AdminProxyHandler.java Outdated
Comment thread pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/AdminProxyHandler.java Outdated
@nodece nodece changed the title [fix][proxy] Handle "Expect: 100-continue" to prevent Early EOF [improve][proxy] Add regression tests for package upload with 'Expect: 100-continue' Feb 5, 2026
nodece and others added 4 commits February 5, 2026 12:33
…/packages/management/core/MockedPackagesStorage.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…nProxyHandler.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…/packages/management/core/MockedPackagesStorageTest.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Member

@lhotari lhotari left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Great work @nodece

@nodece nodece merged commit e8fedb1 into apache:master Feb 5, 2026
97 of 102 checks passed
@nodece nodece deleted the fix-early-eof branch February 5, 2026 09:34
nodece added a commit to ascentstream/pulsar that referenced this pull request Feb 5, 2026
…: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

(cherry picked from commit e8fedb1)
lhotari pushed a commit that referenced this pull request Feb 5, 2026
…: 100-continue' (#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
lhotari pushed a commit that referenced this pull request Feb 5, 2026
…: 100-continue' (#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
lhotari pushed a commit that referenced this pull request Feb 6, 2026
…: 100-continue' (#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
nodece added a commit to nodece/pulsar that referenced this pull request Feb 6, 2026
…: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
nodece added a commit to ascentstream/pulsar that referenced this pull request Feb 9, 2026
…: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
hshankar31 pushed a commit to datastax/pulsar that referenced this pull request Feb 11, 2026
…: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
(cherry picked from commit 0947639)
Rutuja-IBM pushed a commit to datastax/pulsar that referenced this pull request Feb 13, 2026
…: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
(cherry picked from commit 1d25d04)
hshankar31 pushed a commit to datastax/pulsar that referenced this pull request Feb 16, 2026
…: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
(cherry picked from commit 0947639)
manas-ctds pushed a commit to datastax/pulsar that referenced this pull request Feb 18, 2026
…: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
(cherry picked from commit 1d25d04)
priyanshu-ctds pushed a commit to datastax/pulsar that referenced this pull request Feb 18, 2026
…datastax 4 0 ds 16 feb (#589)

* [improve][broker] Ensure metadata session state visibility and improve Unstable observability for ServiceUnitStateChannelImpl (apache#25132)

(cherry picked from commit 2a29be0)
(cherry picked from commit 85dc758)

* [improve][broker] Upgrade bookkeeper to 4.17.3 (apache#25166)

(cherry picked from commit 45def39)
(cherry picked from commit 333110a)

* fix license and pom file

* [fix][ml] Fix NoSuchElementException in EntryCountEstimator caused by a race condition (apache#25177)

(cherry picked from commit 9b70ba3)
(cherry picked from commit 9261869)

* [fix][test] Bump org.assertj:assertj-core from 3.27.5 to 3.27.7 (apache#25186)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit ce4ebea)
(cherry picked from commit 2c3402e)

* [improve][misc] Upgrade snappy version to 1.1.10.8 (apache#25182)

(cherry picked from commit b15f53b)
(cherry picked from commit 304fea1)

* [fix][proxy] Close client connection immediately when credentials expire and forwardAuthorizationCredentials is disabled (apache#25179)

(cherry picked from commit 3348470)
(cherry picked from commit c06f8ba)

* [fix][client] ControlledClusterFailover avoid unnecessary reconnection. (apache#25178)

Co-authored-by: fengwenzhi <fengwenzhi.max@bigo.sg>
(cherry picked from commit f0ec07b)
(cherry picked from commit b41488d)

* [fix][sec] Bump org.apache.solr:solr-core from 9.8.0 to 9.10.1 in /pulsar-io/solr (apache#25175)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
(cherry picked from commit a2f888a)
(cherry picked from commit b532068)

* [improve][pip] PIP-453: Improve the metadata store threading model (apache#25173)

(cherry picked from commit c51346f)
(cherry picked from commit d81d6b3)

* [improve][client]Reduce unnecessary getPartitionedTopicMetadata requests when using retry and DLQ topics. (apache#25172)

(cherry picked from commit 52a4d5e)
(cherry picked from commit 71a3994)

* [fix][misc] Allow JWT tokens in OpenID auth without nbf claim (apache#25197)

(cherry picked from commit d630394)
(cherry picked from commit 2760ee9)

* [fix][sec] Exclude org.lz4:lz4-java and standardize on at.yawk.lz4-java to remediate CVE-2025-12183 and CVE-2025-66566 (apache#25198)

(cherry picked from commit c07f2ad)
(cherry picked from commit 2ac6d03)

* fix checkstyle failure and license issues

* [fix] [test] Upgrade docker-java to 3.7.0 (apache#25209)

(cherry picked from commit 4add84c)
(cherry picked from commit 92b5d55)

* [fix][client] Fix race condition between isDuplicate() and flushAsync() method in PersistentAcknowledgmentsGroupingTracker due to incorrect use Netty Recycler (apache#25208)

(cherry picked from commit 5aab2f0)
(cherry picked from commit 2206949)

* [improve][monitor] Upgrade OpenTelemetry to 1.56.0, Otel instrumentation to 2.21.0 and Otel semconv to 1.37.0 (apache#24994)

(cherry picked from commit 53162ff)
(cherry picked from commit a1d5b6c)

* [improve][proxy] Add regression tests for package upload with 'Expect: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
(cherry picked from commit 0947639)

* fix license issues

* [fix][test]Fix flaky ExtensibleLoadManagerImplTest_testGetMetrics (apache#25216)

(cherry picked from commit 257d42f)
(cherry picked from commit a8eac91)

* [fix][broker] Fix ManagedCursorImpl.asyncDelete() method may lose previous async mark delete properties in race condition (apache#25165)

(cherry picked from commit bea6f8a)
(cherry picked from commit 4332a44)

* [fix][broker]Fix ledgerHandle failed to read by using new BK API (apache#25199)

(cherry picked from commit 6d51f88)
(cherry picked from commit 1631fed)

* [fix][client] Fix producer synchronous retry handling in failPendingMessages method (apache#25207)

(cherry picked from commit 611efe4)
(cherry picked from commit 30ae8fb)

* [fix][broker] Prevent missed topic changes in topic watchers and schedule periodic refresh with patternAutoDiscoveryPeriod interval (apache#25188)

(cherry picked from commit 2e06cc0)
(cherry picked from commit ba2a230)

* fix for complilation error

* [feat][io] implement pip-297 for jdbc sinks (apache#25195)

(cherry picked from commit 6f4ac21)
(cherry picked from commit 998a4b1)

* [fix][broker] Fix httpProxyTimeout config (apache#25223)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit 2d6ef6f)
(cherry picked from commit 3b39c7b)

* [improve][broker] Add strictAuthMethod to require explicit authentication method (apache#25185)

Co-authored-by: Ómar K. Yasin <oyasin@apple.com>
(cherry picked from commit bae9173)
(cherry picked from commit 27e34f6)

* [feat][client] oauth2 trustcerts file and timeouts (apache#24944)

(cherry picked from commit b789d82)
(cherry picked from commit f8827bd)

* [improve][client] Make authorization server metadata path configurable in AuthenticationOAuth2 (apache#25052)

Co-authored-by: hoguni <hoguni@lycorp.co.jp>
(cherry picked from commit 3cb7a7b)
(cherry picked from commit 705a99d)

* Revert "[improve][broker] Add strictAuthMethod to require explicit authentication method (apache#25185)"

This reverts commit 531eb91.

* [improve][broker] Add idle timeout support for http (apache#25224)

(cherry picked from commit 63220ea)
(cherry picked from commit 144e064)

* [fix][broker] Fix incomplete futures in topic property update/delete methods (apache#25228)

(cherry picked from commit c2ae180)
(cherry picked from commit ab05ca2)

* [fix][test] Fix Mockito stubbing race in TopicListServiceTest (apache#25227)

(cherry picked from commit c93dd7a)
(cherry picked from commit 38a126b)

* [improve][broker] Give the detail error msg when authenticate failed with AuthenticationException (apache#25221)

(cherry picked from commit 0a0ce6d)
(cherry picked from commit 2a46c70)

* [fix][client] Send all chunkMessageIds to broker for redelivery (apache#25229)

(cherry picked from commit 0a0ce6d)
(cherry picked from commit f49c7b2)

* [fix][broker] Fix transactionMetadataFuture completeExceptionally with null value (apache#25231)

Co-authored-by: 张浩 <zhanghao60@100.me>
(cherry picked from commit 0e5d424)
(cherry picked from commit 42283f4)

* uncomment distribution management in pom

* Reapply "[improve][meta] PIP-453: Improve the metadata store threading model (apache#25187)"

This reverts commit a6aab86.

(cherry picked from commit 4f9b2ca)

* [improve] Upgrade Netty to 4.1.131.Final (apache#25232)

(cherry picked from commit db91b93)
(cherry picked from commit a6c602a)

* [fix][test] fix testBatchMetadataStoreMetrics. (apache#25241)

(cherry picked from commit 9db31cc)
(cherry picked from commit abbd478)

* [fix][test] Fix ResourceQuotaCalculatorImplTest#testNeedToReportLocalUsage (apache#25247)

(cherry picked from commit 48774de)
(cherry picked from commit 9343837)

* [fix][meta] Metadata cache refresh might not take effect (apache#25246)

(cherry picked from commit 24eba10)
(cherry picked from commit 6d81292)

* fix pulsar-proxy unit test case failure

* fix safe delete URLRegexLookupProxyHandler which is not used

* Revert "fix safe delete URLRegexLookupProxyHandler which is not used"

This reverts commit 158fc14.

* Revert "fix pulsar-proxy unit test case failure"

This reverts commit 4efcf70.

* updated hardcoded newLookupProxyHandler in ProxyService for failing URLRegexLookupProxyHandlerTest

* Revert "[improve][monitor] Upgrade OpenTelemetry to 1.56.0, Otel instrumentation to 2.21.0 and Otel semconv to 1.37.0 (apache#24994)"

This reverts commit 5e5328e

* reverted lincense for opentelemetry upgrade changes

* Revert "updated hardcoded newLookupProxyHandler in ProxyService for failing URLRegexLookupProxyHandlerTest"

This reverts commit a4f07dc.

* reverted mismatch commits changes in ProxyConnection.java

* fix code-style issue

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Kai Wang <kwang@apache.org>
Co-authored-by: Yong Zhang <zhangyong1025.zy@gmail.com>
Co-authored-by: Lari Hotari <lhotari@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Zixuan Liu <nodeces@gmail.com>
Co-authored-by: Wenzhi Feng <thetumbled@apache.org>
Co-authored-by: fengwenzhi <fengwenzhi.max@bigo.sg>
Co-authored-by: Yunze Xu <xyzinfernity@163.com>
Co-authored-by: zhenJiangWang <zhenjiang427@gmail.com>
Co-authored-by: guptas6est <sanaya.gupta@est.tech>
Co-authored-by: Matteo Merli <mmerli@apache.org>
Co-authored-by: Oneby Wang <44369297+oneby-wang@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: fengyubiao <yubiao.feng@streamnative.io>
Co-authored-by: Malla Sandeep <sandeep.malla78@gmail.com>
Co-authored-by: Bäm <dev@sandchaschte.ch>
Co-authored-by: Omar Yasin <omarkj@icloud.com>
Co-authored-by: Ómar K. Yasin <oyasin@apple.com>
Co-authored-by: gulecroc <gu.lecroc@gmail.com>
Co-authored-by: Hideaki Oguni <22386882+izumo27@users.noreply.github.com>
Co-authored-by: hoguni <hoguni@lycorp.co.jp>
Co-authored-by: Cong Zhao <zhaocong@apache.org>
Co-authored-by: sinan liu <liusinan1998@gmail.com>
Co-authored-by: Jiwei Guo <technoboy@apache.org>
Co-authored-by: cai minjian <905767378@qq.com>
Co-authored-by: Hao Zhang <zhanghao1@cmss.chinamobile.com>
Co-authored-by: 张浩 <zhanghao60@100.me>
Co-authored-by: Lari Hotari <lhotari@apache.org>
Co-authored-by: zzb <48124861+zhaizhibo@users.noreply.github.com>
priyanshu-ctds pushed a commit to datastax/pulsar that referenced this pull request Feb 23, 2026
…: 100-continue' (apache#25211)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit e8fedb1)
(cherry picked from commit 0947639)
@lhotari lhotari added this to the 4.2.0 milestone Mar 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants