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]

Reply via email to