Jens-G commented on PR #3648:
URL: https://github.com/apache/thrift/pull/3648#issuecomment-5028071002

   ### Code review
   
   Found 1 issue:
   
   1. `ResponseQueue#complete` holds `@mutex` while performing a blocking 
socket write (`write_response` calls `@transport.write`/`flush` inside the 
lock). The same mutex is required by `reserve`, called only from the single 
`IOManager` thread's read/dispatch loop for every connection — so one client 
that stops draining its receive buffer while a reply write is in flight can 
stall dispatch for all other connections too, for up to `client_timeout` 
(default 5s; unbounded if `client_timeout: nil`). This contradicts the PR's 
stated goal that "requests on separate connections continue to run 
independently."
   
   
https://github.com/apache/thrift/blob/d8da61a6930123f8f47c9002e9709d71b5d5b161/lib/rb/lib/thrift/server/nonblocking_server.rb#L438-L461
   
   
https://github.com/apache/thrift/blob/d8da61a6930123f8f47c9002e9709d71b5d5b161/lib/rb/lib/thrift/server/nonblocking_server.rb#L497-L504
   
   🤖 Generated with [Claude Code](https://claude.ai/code)
   
   <sub>- If this code review was useful, please react with 👍. Otherwise, react 
with 👎.</sub>
   


-- 
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