11package opentelemetry
22
33import (
4+ "bytes"
45 "fmt"
56 "net/http"
67 "strconv"
@@ -165,7 +166,6 @@ func GrpcRequestHandler(r *http.Request, w http.ResponseWriter) {
165166 httpserver .Errorf (w , r , "failed to process grpc request:%s" , & httpserver.ErrorWithStatusCode {Err : fmt .Errorf ("grpc method not found: %s" , r .URL .Path ), StatusCode : http .StatusNotFound })
166167 return
167168 }
168-
169169 cp , err := insertutil .GetCommonParams (r )
170170 if err != nil {
171171 httpserver .Errorf (w , r , "cannot parse common params from request: %s" , err )
@@ -186,15 +186,26 @@ func GrpcRequestHandler(r *http.Request, w http.ResponseWriter) {
186186 httpserver .Errorf (w , r , "failed to get protobuf data from request, error: %s" , err )
187187 return
188188 }
189+ encoding := r .Header .Get ("grpc-encoding" )
190+
191+ err = protoparserutil .ReadUncompressedData (bytes .NewReader (protobufData ), encoding , maxRequestSize , func (data []byte ) error {
192+ var (
193+ req otelpb.ExportTraceServiceRequest
194+ callbackErr error
195+ )
196+ lmp := cp .NewLogMessageProcessor ("opentelemetry_traces" , false )
197+ if callbackErr = req .UnmarshalProtobuf (data ); callbackErr != nil {
198+ return fmt .Errorf ("cannot unmarshal request from %d protobuf bytes: %w" , len (data ), callbackErr )
199+ }
200+ callbackErr = pushExportTraceServiceRequest (& req , lmp )
201+ lmp .MustClose ()
202+ return callbackErr
203+ })
189204
190- var req otelpb.ExportTraceServiceRequest
191- lmp := cp .NewLogMessageProcessor ("opentelemetry_traces" , false )
192- if err = req .UnmarshalProtobuf (protobufData ); err != nil {
193- httpserver .Errorf (w , r , "cannot unmarshal request from %d protobuf bytes: %w" , len (protobufData ), err )
205+ if err != nil {
206+ httpserver .Errorf (w , r , "cannot read OpenTelemetry protocol data: %s" , err )
194207 return
195208 }
196- _ = pushExportTraceServiceRequest (& req , lmp )
197- lmp .MustClose ()
198209
199210 writeExportTraceResponses (w , 0 , "" )
200211 return
@@ -232,7 +243,6 @@ func pushFieldsFromScopeSpans(ss *otelpb.ScopeSpans, commonFields []logstorage.F
232243
233244func pushFieldsFromSpan (span * otelpb.Span , scopeCommonFields []logstorage.Field , lmp insertutil.LogMessageProcessor ) []logstorage.Field {
234245 fields := scopeCommonFields
235- println (span .TraceID )
236246 fields = append (fields ,
237247 logstorage.Field {Name : otelpb .TraceIDField , Value : span .TraceID },
238248 logstorage.Field {Name : otelpb .SpanIDField , Value : span .SpanID },
0 commit comments