You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The gRPC-over-curl client of #392 (CurlGrpcWorkflowServiceClient) drives curl by hand. The only reason is that the call status (grpc-status, grpc-message) arrives in the HTTP/2 trailers, and Symfony HttpClient 7.4 discards them: CurlResponse::parseHeaderLine() ignores header lines received after the body, and CURLOPT_HEADERFUNCTION cannot be overridden through extra.curl.
The Durable-as-a-Symfony-component RFC draft proposes folding the curl wire into the Temporal bridge. Inside Symfony, that wire is expected to go through HttpClient, so this upstream change comes first.
If accepted: open the pull request on symfony/symfony (curl, native HTTP/1.1 chunked, MockResponse), with tests, targeting the branch the maintainers name.
Once released: move CurlGrpcWorkflowServiceClient onto HttpClient when the installed version exposes trailers, and keep the raw curl path for older versions.
Accepted: the upstream PR is merged, or this ticket names why it stalled.
Refused: the RFC draft says the curl wire keeps raw curl, and why.
Accepted and released: a test shows the curl wire reading grpc-status through HttpClient against temporal server start-dev; the raw curl path stays covered for older versions.
Parent Epic: #306
Upstream: symfony/symfony#66250 —
[HttpClient] Expose HTTP trailers.The gRPC-over-curl client of #392 (
CurlGrpcWorkflowServiceClient) drives curl by hand. The only reason is that the call status (grpc-status,grpc-message) arrives in the HTTP/2 trailers, and Symfony HttpClient 7.4 discards them:CurlResponse::parseHeaderLine()ignores header lines received after the body, andCURLOPT_HEADERFUNCTIONcannot be overridden throughextra.curl.The Durable-as-a-Symfony-component RFC draft proposes folding the curl wire into the Temporal bridge. Inside Symfony, that wire is expected to go through HttpClient, so this upstream change comes first.
Steps
getInfo('trailers')or another shape) is accepted or refused.MockResponse), with tests, targeting the branch the maintainers name.CurlGrpcWorkflowServiceClientonto HttpClient when the installed version exposes trailers, and keep the raw curl path for older versions.Done when
grpc-statusthrough HttpClient againsttemporal server start-dev; the raw curl path stays covered for older versions.