You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by "Lcos-000 (via GitHub)" <gi...@apache.org> on 2026/08/17 07:07:13 UTC
[PR] test(triple_header_trailer): cover SendHeader response-header path [dubbo-go-samples]
Lcos-000 opened a new pull request, #1139:
URL: https://github.com/apache/dubbo-go-samples/pull/1139
## What & why
Exercise `triple.SendHeader` in the unary `Greet` handler (in addition to the existing `SetHeader`) and assert the flushed header reaches the client. This turns the `triple_header_trailer` integration test into a regression test for apache/dubbo-go#3667.
Before apache/dubbo-go#3668, `SendHeader` merged user headers into `conn.RequestHeader()` instead of `conn.ResponseHeader()`, so:
- **Response headers were silently dropped** — `grpcHandlerConn.Send` only flushes `hc.responseHeader` into the response writer, so the user's headers never reached the client.
- **Request headers were polluted** — the headers were merged into the shared inbound request header map, so subsequent `RequestHeader()` / `FromIncomingContext` reads observed headers the client never sent.
The current sample never called `SendHeader` (repo-wide grep: 0 matches; the server uses `SetHeader`/`SetTrailer` and `stream.ResponseHeader().Set()`, all of which go through the correct `conn.ResponseHeader()` path). The integration test only checks the client exit code, with assertions targeting only keys written via the correct paths — so the buggy `SendHeader` path was never exercised and CI stayed green.
## Changes
- `go-server/cmd/main.go`: add `unarySendHeaderKey = "X-Unary-Send-Response"`; in the unary `Greet` handler, call `triple.SendHeader(ctx, http.Header{unarySendHeaderKey: {"unary-send-header"}})` after the existing `SetHeader` (order matters: `SetHeader` → `SendHeader` → `SetTrailer`, so `SendHeader`'s flush does not snapshot the writer headers before `SetHeader`'s value is staged).
- `go-client/cmd/main.go`: add the same constant; log the new key and assert `requireHeader(responseHeader, unarySendHeaderKey, "unary-send-header")` right after the existing `X-Unary-Response` assertion.
- `README.md` / `README_CN.md`: document `triple.SendHeader` in the demonstrated-API list and explain the SetHeader (buffered) vs SendHeader (immediate flush) semantics.
## Verification
Pointed \`go.mod\` at dubbo-go via \`go mod edit -replace\` and ran the sample end-to-end against both the buggy and fixed dubbo-go revisions:
| dubbo-go revision | `X-Unary-Send-Response` received | new assertion | client exit |
|---|---|---|---|
| \`main\` (buggy, apache/dubbo-go#3667) | \`[]\` | \`panic: missing header X-Unary-Send-Response="unary-send-header"\` | 1 ❌ |
| \`pr-3668\` (fixed) | \`[unary-send-header]\` | passes | 0 ✅ |
The existing \`X-Unary-Response\` (via \`SetHeader\`) still arrives under both revisions, confirming the change is path-specific and does not disturb the original demo. All four call types (unary, bidi-stream, client-stream, server-stream) pass on the fixed revision.
\`go.mod\` / \`go.sum\` are untouched (the \`replace\` was only used for local verification and dropped before commit); \`gofmt\` clean.
## Notes
Depends on apache/dubbo-go#3668 for the assertion to pass. If this PR lands before the framework fix, the integration test will fail on \`main\` — which is the intended signal.
Refs: apache/dubbo-go#3668, apache/dubbo-go#3667
--
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: notifications-unsubscribe@dubbo.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org
Re: [PR] test(triple_header_trailer): cover SendHeader response-header path [dubbo-go-samples]
Posted by "Alanxtl (via GitHub)" <gi...@apache.org>.
Alanxtl merged PR #1139:
URL: https://github.com/apache/dubbo-go-samples/pull/1139
--
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: notifications-unsubscribe@dubbo.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org