[
https://issues.apache.org/jira/browse/THRIFT-6370?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Volodymyr Panivko reassigned THRIFT-6370:
-----------------------------------------
Assignee: Volodymyr Panivko
> PHP: Give each TCurlClient its own curl handle
> ----------------------------------------------
>
> Key: THRIFT-6370
> URL: https://issues.apache.org/jira/browse/THRIFT-6370
> Project: Thrift
> Issue Type: Bug
> Components: PHP - Library
> Reporter: Volodymyr Panivko
> Assignee: Volodymyr Panivko
> Priority: Major
>
> TCurlClient instances share a static curl handle, so curl options and handle
> cleanup can affect other clients.
> For example, after client A sends a request with a 100 ms timeout, a new
> client B with no timeout inherits A's setting. B then fails after about 100
> ms even when its response would arrive after 350 ms. The connection timeout
> is shared in the same way.
> Give each TCurlClient its own reusable curl handle. Closing a client or
> handling a failed transfer should release only that client's handle. Remove
> the global shutdown callback and allow PHP to release the handle with its
> owning object.
> Acceptance criteria:
> * Timeout and connection-timeout settings do not carry over between client
> instances.
> * Repeated requests reuse the owning client's handle.
> * Closing a client or failing its request leaves other clients' handles
> usable.
> * A subsequent request recreates a released handle.
> * Regression tests cover isolation, reuse and cleanup; the PHP README
> documents the compatibility change.
> Compatibility: closeCurlHandle() becomes an instance method. Replace
> TCurlClient::closeCurlHandle() with $client->closeCurlHandle(), or use
> $client->close() to release the handle and clear the buffers. Connections are
> reused within a client instance instead of being shared across instances.
> Draft implementation and regression tests:
> https://github.com/apache/thrift/pull/3947
> Generated-by: Codex (GPT-6)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)