kpumuk opened a new pull request, #3634:
URL: https://github.com/apache/thrift/pull/3634
<!-- Explain the changes in the pull request below: -->
Ruby HTTP server support has historically been coupled to Thin and Mongrel.
Mongrel no longer works with supported Ruby versions, while Thin is inactive
and its EventMachine dependency does not compile on Ruby development versions
targeting Ruby 4.1.
This change extracts Thrift HTTP request processing into
`Thrift::RackApplication`. It can run as a standalone Rack application or be
mounted at a route inside an existing Rack application such as Rails. The Rack
host remains responsible for listening, concurrency, lifecycle, and TLS
configuration.
`Thrift::ThinHTTPServer` now delegates to the shared Rack application and
emits a deprecation warning. Thin remains available for compatibility and
continues to be covered by cross-language tests. `Thrift::MongrelHTTPServer` is
removed.
The Ruby integration harness now exercises HTTP and HTTPS with Thin, Puma,
and Falcon. The Ruby HTTP client also participates in cross-language HTTP tests
and accepts `ssl_ca_file` for verification against test or private certificate
authorities. Cross-tests use Ruby 4.0 rather than the oldest supported Ruby
version, this is to allow us to test against Falcon (requires 3.3+).
The Ruby README documents the Rack and Rails mounting APIs and records the
Thin deprecation and Mongrel removal for the 0.25.0 release.
### Caveats
- `ONEWAY` calls receive no special asynchronous handling. The processor
completes inside the Rack request before the HTTP response is returned,
preserving the historical Thin behavior. No detached threads, Rack hijacking,
or server-specific async APIs are introduced. Cross-tests that enforce
fire-and-forget timing are recorded as known failures; the processing model can
be reconsidered separately.
- Puma and Falcon support is provided through `Thrift::RackApplication`;
this does not introduce `PumaHTTPServer` or `FalconHTTPServer` wrapper classes.
Applications configure and operate those servers normally.
- TLS termination belongs to the Rack server. The integration harness
configures TLS for Thin, Puma, and Falcon, while the Rack application itself is
transport-agnostic.
- Thin is excluded from Ruby-head builds because EventMachine does not
compile there. It remains tested with Ruby 4.0 but should be treated as a
deprecated compatibility path.
- The Rack endpoint currently buffers each request body before protocol
processing.
<!-- We recommend you review the checklist/tips before submitting a pull
request. -->
- [x] Did you create an [Apache
Jira](https://issues.apache.org/jira/projects/THRIFT/issues/) ticket?
THRIFT-6079
- [x] If a ticket exists: Does your pull request title follow the pattern
"THRIFT-NNNN: describe my issue"?
- [x] Did you squash your changes to a single commit? (not required, but
preferred)
- [x] Did you do your best to avoid breaking changes? If one was needed,
did you label the Jira ticket with "Breaking-Change"?
- [ ] If your change does not involve any code, include `[skip ci]` anywhere
in the commit message to free up build resources.
<!--
The Contributing Guide at:
https://github.com/apache/thrift/blob/master/CONTRIBUTING.md
has more details and tips for committing properly.
-->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]