stats: add comments about why out headers and out trailers have no wire length (#3408)
This commit is contained in:
@ -227,6 +227,8 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro
|
|||||||
|
|
||||||
if err == nil { // transport has not been closed
|
if err == nil { // transport has not been closed
|
||||||
if ht.stats != nil {
|
if ht.stats != nil {
|
||||||
|
// Note: The trailer fields are compressed with hpack after this call returns.
|
||||||
|
// No WireLength field is set here.
|
||||||
ht.stats.HandleRPC(s.Context(), &stats.OutTrailer{
|
ht.stats.HandleRPC(s.Context(), &stats.OutTrailer{
|
||||||
Trailer: s.trailer.Copy(),
|
Trailer: s.trailer.Copy(),
|
||||||
})
|
})
|
||||||
@ -291,6 +293,8 @@ func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error {
|
|||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if ht.stats != nil {
|
if ht.stats != nil {
|
||||||
|
// Note: The header fields are compressed with hpack after this call returns.
|
||||||
|
// No WireLength field is set here.
|
||||||
ht.stats.HandleRPC(s.Context(), &stats.OutHeader{
|
ht.stats.HandleRPC(s.Context(), &stats.OutHeader{
|
||||||
Header: md.Copy(),
|
Header: md.Copy(),
|
||||||
})
|
})
|
||||||
|
@ -686,6 +686,8 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea
|
|||||||
} else {
|
} else {
|
||||||
header = metadata.Pairs("user-agent", t.userAgent)
|
header = metadata.Pairs("user-agent", t.userAgent)
|
||||||
}
|
}
|
||||||
|
// Note: The header fields are compressed with hpack after this call returns.
|
||||||
|
// No WireLength field is set here.
|
||||||
outHeader := &stats.OutHeader{
|
outHeader := &stats.OutHeader{
|
||||||
Client: true,
|
Client: true,
|
||||||
FullMethod: callHdr.Method,
|
FullMethod: callHdr.Method,
|
||||||
|
@ -813,8 +813,8 @@ func (t *http2Server) writeHeaderLocked(s *Stream) error {
|
|||||||
return ErrHeaderListSizeLimitViolation
|
return ErrHeaderListSizeLimitViolation
|
||||||
}
|
}
|
||||||
if t.stats != nil {
|
if t.stats != nil {
|
||||||
// Note: WireLength is not set in outHeader.
|
// Note: Headers are compressed with hpack after this call returns.
|
||||||
// TODO(mmukhi): Revisit this later, if needed.
|
// No WireLength field is set here.
|
||||||
outHeader := &stats.OutHeader{
|
outHeader := &stats.OutHeader{
|
||||||
Header: s.header.Copy(),
|
Header: s.header.Copy(),
|
||||||
}
|
}
|
||||||
@ -880,6 +880,8 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error {
|
|||||||
rst := s.getState() == streamActive
|
rst := s.getState() == streamActive
|
||||||
t.finishStream(s, rst, http2.ErrCodeNo, trailingHeader, true)
|
t.finishStream(s, rst, http2.ErrCodeNo, trailingHeader, true)
|
||||||
if t.stats != nil {
|
if t.stats != nil {
|
||||||
|
// Note: The trailer fields are compressed with hpack after this call returns.
|
||||||
|
// No WireLength field is set here.
|
||||||
t.stats.HandleRPC(s.Context(), &stats.OutTrailer{
|
t.stats.HandleRPC(s.Context(), &stats.OutTrailer{
|
||||||
Trailer: s.trailer.Copy(),
|
Trailer: s.trailer.Copy(),
|
||||||
})
|
})
|
||||||
|
@ -165,6 +165,9 @@ type OutTrailer struct {
|
|||||||
// Client is true if this OutTrailer is from client side.
|
// Client is true if this OutTrailer is from client side.
|
||||||
Client bool
|
Client bool
|
||||||
// WireLength is the wire length of trailer.
|
// WireLength is the wire length of trailer.
|
||||||
|
//
|
||||||
|
// Deprecated: This field is never set. The length is not known when this message is
|
||||||
|
// emitted because the trailer fields are compressed with hpack after that.
|
||||||
WireLength int
|
WireLength int
|
||||||
// Trailer contains the trailer metadata sent to the client. This
|
// Trailer contains the trailer metadata sent to the client. This
|
||||||
// field is only valid if this OutTrailer is from the server side.
|
// field is only valid if this OutTrailer is from the server side.
|
||||||
|
Reference in New Issue
Block a user