Skip to content

transport/grpc: remove redundant header canonicalization - #2481

Open
bananacocodrilo wants to merge 1 commit into
yarpc:mainfrom
bananacocodrilo:grpc-header-canonicalization-optimization
Open

transport/grpc: remove redundant header canonicalization#2481
bananacocodrilo wants to merge 1 commit into
yarpc:mainfrom
bananacocodrilo:grpc-header-canonicalization-optimization

Conversation

@bananacocodrilo

Copy link
Copy Markdown
Collaborator

RELEASE NOTES:

Removed redundant header canonicalization in gRPC transport

transportRequestToMetadata 712 ns -> 671 ns (-6%)
metadataToTransportRequest 748 ns -> 614 ns (-18%)
getApplicationHeaders 488 ns -> 397 ns (-19%)

Inbound request MD (handler.go:107-111) — metadata.FromIncomingContext(ctx). grpc-go docs: "All keys in the returned MD are lowercase."

Response trailer MD (outbound.go:135-137) — populated by grpc-go from the wire. Same as request MD

Outbound application headers (transportRequestToMetadata, response_writer.go:66-70) — come from transport.Headers.Items(). transport.Headers has unexported fields and its only mutator With() lowercases keys via CanonicalizeHeaderKey;

  transportRequestToMetadata   712 ns -> 671 ns  (-6%)
  metadataToTransportRequest   748 ns -> 614 ns  (-18%)
  getApplicationHeaders        488 ns -> 397 ns  (-19%)
@bananacocodrilo
bananacocodrilo force-pushed the grpc-header-canonicalization-optimization branch from 390793b to 1bd25e6 Compare July 14, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant