diff --git a/.chloggen/use-new-protos.yaml b/.chloggen/use-new-protos.yaml new file mode 100644 index 00000000000..a11e1feb8e5 --- /dev/null +++ b/.chloggen/use-new-protos.yaml @@ -0,0 +1,25 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver) +component: pdata + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Use the newly added proto marshaler/unmarshaler for the official proto Marshaler/Unmarshaler + +# One or more tracking issues or pull requests related to the change +issues: [13637] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/internal/e2e/go.mod b/internal/e2e/go.mod index 7b7f1be392a..0eac66ab41f 100644 --- a/internal/e2e/go.mod +++ b/internal/e2e/go.mod @@ -3,6 +3,7 @@ module go.opentelemetry.io/collector/internal/e2e go 1.24 require ( + github.com/google/go-cmp v0.7.0 github.com/prometheus/common v0.65.0 github.com/stretchr/testify v1.10.0 go.opentelemetry.io/collector v0.132.0 @@ -43,9 +44,11 @@ require ( go.opentelemetry.io/collector/receiver/otlpreceiver v0.132.0 go.opentelemetry.io/collector/receiver/receivertest v0.132.0 go.opentelemetry.io/collector/service v0.132.0 + go.opentelemetry.io/proto/otlp v1.7.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 google.golang.org/grpc v1.74.2 + google.golang.org/protobuf v1.36.7 ) require ( @@ -144,7 +147,6 @@ require ( go.opentelemetry.io/otel/sdk/log v0.13.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect - go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.41.0 // indirect @@ -155,7 +157,6 @@ require ( gonum.org/v1/gonum v0.16.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect - google.golang.org/protobuf v1.36.7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect sigs.k8s.io/yaml v1.5.0 // indirect ) diff --git a/internal/e2e/otlphttp_test.go b/internal/e2e/otlphttp_test.go index 8e07b5fe091..8a85d154fc9 100644 --- a/internal/e2e/otlphttp_test.go +++ b/internal/e2e/otlphttp_test.go @@ -7,7 +7,6 @@ import ( "bytes" "compress/gzip" "context" - "encoding/base64" "encoding/hex" "errors" "fmt" @@ -17,8 +16,15 @@ import ( "testing" "time" + "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + gootlpcollectortrace "go.opentelemetry.io/proto/otlp/collector/trace/v1" + gootlpcommon "go.opentelemetry.io/proto/otlp/common/v1" + gootlpresource "go.opentelemetry.io/proto/otlp/resource/v1" + gootlptrace "go.opentelemetry.io/proto/otlp/trace/v1" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/testing/protocmp" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/component/componenttest" @@ -229,6 +235,11 @@ func TestLogsRoundTrip(t *testing.T) { } func TestIssue_4221(t *testing.T) { + traceIDBytesSlice, err := hex.DecodeString("4303853f086f4f8c86cf198b6551df84") + require.NoError(t, err) + spanIDBytesSlice, err := hex.DecodeString("e5513c32795c41b9") + require.NoError(t, err) + svr := httptest.NewServer(http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) { defer func() { assert.NoError(t, r.Body.Close()) }() compressedData, err := io.ReadAll(r.Body) @@ -237,13 +248,75 @@ func TestIssue_4221(t *testing.T) { assert.NoError(t, err) data, err := io.ReadAll(gzipReader) assert.NoError(t, err) - base64Data := base64.StdEncoding.EncodeToString(data) // Verify same base64 encoded string is received. - assert.Equal(t, "CscBCkkKIAoMc2VydmljZS5uYW1lEhAKDnVvcC5zdGFnZS1ldS0xCiUKGW91dHN5c3RlbXMubW9kdWxlLnZlcnNpb24SCAoGOTAzMzg2EnoKEQoMdW9wX2NhbmFyaWVzEgExEmUKEEMDhT8Ib0+Mhs8Zi2VR34QSCOVRPDJ5XEG5IgA5QE41aASRrxZBQE41aASRrxZKEAoKc3Bhbl9pbmRleBICGANKHwoNY29kZS5mdW5jdGlvbhIOCgxteUZ1bmN0aW9uMzZ6AA==", base64Data) - unbase64Data, err := base64.StdEncoding.DecodeString(base64Data) + req := &gootlpcollectortrace.ExportTraceServiceRequest{} + assert.NoError(t, proto.Unmarshal(data, req)) + + assert.Empty(t, cmp.Diff(&gootlpcollectortrace.ExportTraceServiceRequest{ + ResourceSpans: []*gootlptrace.ResourceSpans{ + { + Resource: &gootlpresource.Resource{ + Attributes: []*gootlpcommon.KeyValue{ + { + Key: "service.name", + Value: &gootlpcommon.AnyValue{ + Value: &gootlpcommon.AnyValue_StringValue{ + StringValue: "uop.stage-eu-1", + }, + }, + }, + { + Key: "outsystems.module.version", + Value: &gootlpcommon.AnyValue{ + Value: &gootlpcommon.AnyValue_StringValue{ + StringValue: "903386", + }, + }, + }, + }, + }, + ScopeSpans: []*gootlptrace.ScopeSpans{ + { + Scope: &gootlpcommon.InstrumentationScope{ + Name: "uop_canaries", + Version: "1", + }, + Spans: []*gootlptrace.Span{ + { + TraceId: traceIDBytesSlice, + SpanId: spanIDBytesSlice, + StartTimeUnixNano: 1634684637873000000, + EndTimeUnixNano: 1634684637873000000, + Attributes: []*gootlpcommon.KeyValue{ + { + Key: "span_index", + Value: &gootlpcommon.AnyValue{ + Value: &gootlpcommon.AnyValue_IntValue{ + IntValue: 3, + }, + }, + }, + { + Key: "code.function", + Value: &gootlpcommon.AnyValue{ + Value: &gootlpcommon.AnyValue_StringValue{ + StringValue: "myFunction36", + }, + }, + }, + }, + Status: &gootlptrace.Status{}, + }, + }, + }, + }, + }, + }, + }, req, protocmp.Transform())) + assert.NoError(t, err) tr := ptraceotlp.NewExportRequest() - assert.NoError(t, tr.UnmarshalProto(unbase64Data)) + assert.NoError(t, tr.UnmarshalProto(data)) span := tr.Traces().ResourceSpans().At(0).ScopeSpans().At(0).Spans().At(0) traceID := span.TraceID() assert.Equal(t, "4303853f086f4f8c86cf198b6551df84", hex.EncodeToString(traceID[:])) @@ -264,16 +337,12 @@ func TestIssue_4221(t *testing.T) { span := ils.Spans().AppendEmpty() var traceIDBytes [16]byte - traceIDBytesSlice, err := hex.DecodeString("4303853f086f4f8c86cf198b6551df84") - require.NoError(t, err) copy(traceIDBytes[:], traceIDBytesSlice) span.SetTraceID(traceIDBytes) traceID := span.TraceID() assert.Equal(t, "4303853f086f4f8c86cf198b6551df84", hex.EncodeToString(traceID[:])) var spanIDBytes [8]byte - spanIDBytesSlice, err := hex.DecodeString("e5513c32795c41b9") - require.NoError(t, err) copy(spanIDBytes[:], spanIDBytesSlice) span.SetSpanID(spanIDBytes) spanID := span.SpanID() diff --git a/pdata/plog/pb.go b/pdata/plog/pb.go index a4cb09eb6ea..2b328fb0c57 100644 --- a/pdata/plog/pb.go +++ b/pdata/plog/pb.go @@ -5,7 +5,6 @@ package plog // import "go.opentelemetry.io/collector/pdata/plog" import ( "go.opentelemetry.io/collector/pdata/internal" - otlplogs "go.opentelemetry.io/collector/pdata/internal/data/protogen/logs/v1" ) var _ MarshalSizer = (*ProtoMarshaler)(nil) @@ -13,25 +12,26 @@ var _ MarshalSizer = (*ProtoMarshaler)(nil) type ProtoMarshaler struct{} func (e *ProtoMarshaler) MarshalLogs(ld Logs) ([]byte, error) { - pb := internal.LogsToProto(internal.Logs(ld)) - return pb.Marshal() + size := internal.SizeProtoOrigExportLogsServiceRequest(ld.getOrig()) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportLogsServiceRequest(ld.getOrig(), buf) + return buf, nil } func (e *ProtoMarshaler) LogsSize(ld Logs) int { - pb := internal.LogsToProto(internal.Logs(ld)) - return pb.Size() + return internal.SizeProtoOrigExportLogsServiceRequest(ld.getOrig()) } func (e *ProtoMarshaler) ResourceLogsSize(rl ResourceLogs) int { - return rl.orig.Size() + return internal.SizeProtoOrigResourceLogs(rl.orig) } func (e *ProtoMarshaler) ScopeLogsSize(sl ScopeLogs) int { - return sl.orig.Size() + return internal.SizeProtoOrigScopeLogs(sl.orig) } func (e *ProtoMarshaler) LogRecordSize(lr LogRecord) int { - return lr.orig.Size() + return internal.SizeProtoOrigLogRecord(lr.orig) } var _ Unmarshaler = (*ProtoUnmarshaler)(nil) @@ -39,7 +39,10 @@ var _ Unmarshaler = (*ProtoUnmarshaler)(nil) type ProtoUnmarshaler struct{} func (d *ProtoUnmarshaler) UnmarshalLogs(buf []byte) (Logs, error) { - pb := otlplogs.LogsData{} - err := pb.Unmarshal(buf) - return Logs(internal.LogsFromProto(pb)), err + ld := NewLogs() + err := internal.UnmarshalProtoOrigExportLogsServiceRequest(ld.getOrig(), buf) + if err != nil { + return Logs{}, err + } + return ld, nil } diff --git a/pdata/plog/plogotlp/request.go b/pdata/plog/plogotlp/request.go index 6240635223e..a39bf7f7011 100644 --- a/pdata/plog/plogotlp/request.go +++ b/pdata/plog/plogotlp/request.go @@ -42,12 +42,16 @@ func NewExportRequestFromLogs(ld plog.Logs) ExportRequest { // MarshalProto marshals ExportRequest into proto bytes. func (ms ExportRequest) MarshalProto() ([]byte, error) { - return ms.orig.Marshal() + size := internal.SizeProtoOrigExportLogsServiceRequest(ms.orig) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportLogsServiceRequest(ms.orig, buf) + return buf, nil } // UnmarshalProto unmarshalls ExportRequest from proto bytes. func (ms ExportRequest) UnmarshalProto(data []byte) error { - if err := ms.orig.Unmarshal(data); err != nil { + err := internal.UnmarshalProtoOrigExportLogsServiceRequest(ms.orig, data) + if err != nil { return err } otlp.MigrateLogs(ms.orig.ResourceLogs) diff --git a/pdata/plog/plogotlp/response.go b/pdata/plog/plogotlp/response.go index 1bc83c354db..5a997ac14d7 100644 --- a/pdata/plog/plogotlp/response.go +++ b/pdata/plog/plogotlp/response.go @@ -12,12 +12,15 @@ import ( // MarshalProto marshals ExportResponse into proto bytes. func (ms ExportResponse) MarshalProto() ([]byte, error) { - return ms.orig.Marshal() + size := internal.SizeProtoOrigExportLogsServiceResponse(ms.orig) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportLogsServiceResponse(ms.orig, buf) + return buf, nil } // UnmarshalProto unmarshalls ExportResponse from proto bytes. func (ms ExportResponse) UnmarshalProto(data []byte) error { - return ms.orig.Unmarshal(data) + return internal.UnmarshalProtoOrigExportLogsServiceResponse(ms.orig, data) } // MarshalJSON marshals ExportResponse into JSON bytes. diff --git a/pdata/pmetric/pb.go b/pdata/pmetric/pb.go index 775a96f6a7e..7897ff4ac7f 100644 --- a/pdata/pmetric/pb.go +++ b/pdata/pmetric/pb.go @@ -5,7 +5,6 @@ package pmetric // import "go.opentelemetry.io/collector/pdata/pmetric" import ( "go.opentelemetry.io/collector/pdata/internal" - otlpmetrics "go.opentelemetry.io/collector/pdata/internal/data/protogen/metrics/v1" ) var _ MarshalSizer = (*ProtoMarshaler)(nil) @@ -13,47 +12,51 @@ var _ MarshalSizer = (*ProtoMarshaler)(nil) type ProtoMarshaler struct{} func (e *ProtoMarshaler) MarshalMetrics(md Metrics) ([]byte, error) { - pb := internal.MetricsToProto(internal.Metrics(md)) - return pb.Marshal() + size := internal.SizeProtoOrigExportMetricsServiceRequest(md.getOrig()) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportMetricsServiceRequest(md.getOrig(), buf) + return buf, nil } func (e *ProtoMarshaler) MetricsSize(md Metrics) int { - pb := internal.MetricsToProto(internal.Metrics(md)) - return pb.Size() + return internal.SizeProtoOrigExportMetricsServiceRequest(md.getOrig()) } func (e *ProtoMarshaler) ResourceMetricsSize(rm ResourceMetrics) int { - return rm.orig.Size() + return internal.SizeProtoOrigResourceMetrics(rm.orig) } func (e *ProtoMarshaler) ScopeMetricsSize(sm ScopeMetrics) int { - return sm.orig.Size() + return internal.SizeProtoOrigScopeMetrics(sm.orig) } func (e *ProtoMarshaler) MetricSize(m Metric) int { - return m.orig.Size() + return internal.SizeProtoOrigMetric(m.orig) } func (e *ProtoMarshaler) NumberDataPointSize(ndp NumberDataPoint) int { - return ndp.orig.Size() + return internal.SizeProtoOrigNumberDataPoint(ndp.orig) } func (e *ProtoMarshaler) SummaryDataPointSize(sdps SummaryDataPoint) int { - return sdps.orig.Size() + return internal.SizeProtoOrigSummaryDataPoint(sdps.orig) } func (e *ProtoMarshaler) HistogramDataPointSize(hdp HistogramDataPoint) int { - return hdp.orig.Size() + return internal.SizeProtoOrigHistogramDataPoint(hdp.orig) } func (e *ProtoMarshaler) ExponentialHistogramDataPointSize(ehdp ExponentialHistogramDataPoint) int { - return ehdp.orig.Size() + return internal.SizeProtoOrigExponentialHistogramDataPoint(ehdp.orig) } type ProtoUnmarshaler struct{} func (d *ProtoUnmarshaler) UnmarshalMetrics(buf []byte) (Metrics, error) { - pb := otlpmetrics.MetricsData{} - err := pb.Unmarshal(buf) - return Metrics(internal.MetricsFromProto(pb)), err + md := NewMetrics() + err := internal.UnmarshalProtoOrigExportMetricsServiceRequest(md.getOrig(), buf) + if err != nil { + return Metrics{}, err + } + return md, nil } diff --git a/pdata/pmetric/pmetricotlp/request.go b/pdata/pmetric/pmetricotlp/request.go index 3d6cf6cad4c..e323cb6be4b 100644 --- a/pdata/pmetric/pmetricotlp/request.go +++ b/pdata/pmetric/pmetricotlp/request.go @@ -6,6 +6,7 @@ package pmetricotlp // import "go.opentelemetry.io/collector/pdata/pmetric/pmetr import ( "go.opentelemetry.io/collector/pdata/internal" otlpcollectormetrics "go.opentelemetry.io/collector/pdata/internal/data/protogen/collector/metrics/v1" + "go.opentelemetry.io/collector/pdata/internal/otlp" "go.opentelemetry.io/collector/pdata/pmetric" ) @@ -41,12 +42,20 @@ func NewExportRequestFromMetrics(md pmetric.Metrics) ExportRequest { // MarshalProto marshals ExportRequest into proto bytes. func (ms ExportRequest) MarshalProto() ([]byte, error) { - return ms.orig.Marshal() + size := internal.SizeProtoOrigExportMetricsServiceRequest(ms.orig) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportMetricsServiceRequest(ms.orig, buf) + return buf, nil } // UnmarshalProto unmarshalls ExportRequest from proto bytes. func (ms ExportRequest) UnmarshalProto(data []byte) error { - return ms.orig.Unmarshal(data) + err := internal.UnmarshalProtoOrigExportMetricsServiceRequest(ms.orig, data) + if err != nil { + return err + } + otlp.MigrateMetrics(ms.orig.ResourceMetrics) + return nil } // MarshalJSON marshals ExportRequest into JSON bytes. diff --git a/pdata/pmetric/pmetricotlp/response.go b/pdata/pmetric/pmetricotlp/response.go index 369c6743b0d..b34d5350f80 100644 --- a/pdata/pmetric/pmetricotlp/response.go +++ b/pdata/pmetric/pmetricotlp/response.go @@ -12,12 +12,15 @@ import ( // MarshalProto marshals ExportResponse into proto bytes. func (ms ExportResponse) MarshalProto() ([]byte, error) { - return ms.orig.Marshal() + size := internal.SizeProtoOrigExportMetricsServiceResponse(ms.orig) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportMetricsServiceResponse(ms.orig, buf) + return buf, nil } // UnmarshalProto unmarshalls ExportResponse from proto bytes. func (ms ExportResponse) UnmarshalProto(data []byte) error { - return ms.orig.Unmarshal(data) + return internal.UnmarshalProtoOrigExportMetricsServiceResponse(ms.orig, data) } // MarshalJSON marshals ExportResponse into JSON bytes. diff --git a/pdata/pprofile/pb.go b/pdata/pprofile/pb.go index 12e8ca5d14f..66642501e65 100644 --- a/pdata/pprofile/pb.go +++ b/pdata/pprofile/pb.go @@ -5,7 +5,6 @@ package pprofile // import "go.opentelemetry.io/collector/pdata/pprofile" import ( "go.opentelemetry.io/collector/pdata/internal" - otlpprofile "go.opentelemetry.io/collector/pdata/internal/data/protogen/profiles/v1development" ) var _ MarshalSizer = (*ProtoMarshaler)(nil) @@ -13,31 +12,35 @@ var _ MarshalSizer = (*ProtoMarshaler)(nil) type ProtoMarshaler struct{} func (e *ProtoMarshaler) MarshalProfiles(pd Profiles) ([]byte, error) { - pb := internal.ProfilesToProto(internal.Profiles(pd)) - return pb.Marshal() + size := internal.SizeProtoOrigExportProfilesServiceRequest(pd.getOrig()) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportProfilesServiceRequest(pd.getOrig(), buf) + return buf, nil } func (e *ProtoMarshaler) ProfilesSize(pd Profiles) int { - pb := internal.ProfilesToProto(internal.Profiles(pd)) - return pb.Size() + return internal.SizeProtoOrigExportProfilesServiceRequest(pd.getOrig()) } func (e *ProtoMarshaler) ResourceProfilesSize(pd ResourceProfiles) int { - return pd.orig.Size() + return internal.SizeProtoOrigResourceProfiles(pd.orig) } func (e *ProtoMarshaler) ScopeProfilesSize(pd ScopeProfiles) int { - return pd.orig.Size() + return internal.SizeProtoOrigScopeProfiles(pd.orig) } func (e *ProtoMarshaler) ProfileSize(pd Profile) int { - return pd.orig.Size() + return internal.SizeProtoOrigProfile(pd.orig) } type ProtoUnmarshaler struct{} func (d *ProtoUnmarshaler) UnmarshalProfiles(buf []byte) (Profiles, error) { - pb := otlpprofile.ProfilesData{} - err := pb.Unmarshal(buf) - return Profiles(internal.ProfilesFromProto(pb)), err + pd := NewProfiles() + err := internal.UnmarshalProtoOrigExportProfilesServiceRequest(pd.getOrig(), buf) + if err != nil { + return Profiles{}, err + } + return pd, nil } diff --git a/pdata/pprofile/pprofileotlp/request.go b/pdata/pprofile/pprofileotlp/request.go index 6655aef2c96..db69cf6cc06 100644 --- a/pdata/pprofile/pprofileotlp/request.go +++ b/pdata/pprofile/pprofileotlp/request.go @@ -42,12 +42,16 @@ func NewExportRequestFromProfiles(td pprofile.Profiles) ExportRequest { // MarshalProto marshals ExportRequest into proto bytes. func (ms ExportRequest) MarshalProto() ([]byte, error) { - return ms.orig.Marshal() + size := internal.SizeProtoOrigExportProfilesServiceRequest(ms.orig) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportProfilesServiceRequest(ms.orig, buf) + return buf, nil } // UnmarshalProto unmarshalls ExportRequest from proto bytes. func (ms ExportRequest) UnmarshalProto(data []byte) error { - if err := ms.orig.Unmarshal(data); err != nil { + err := internal.UnmarshalProtoOrigExportProfilesServiceRequest(ms.orig, data) + if err != nil { return err } otlp.MigrateProfiles(ms.orig.ResourceProfiles) diff --git a/pdata/pprofile/pprofileotlp/response.go b/pdata/pprofile/pprofileotlp/response.go index 64ed98b945b..2b88ef01c2f 100644 --- a/pdata/pprofile/pprofileotlp/response.go +++ b/pdata/pprofile/pprofileotlp/response.go @@ -12,12 +12,15 @@ import ( // MarshalProto marshals ExportResponse into proto bytes. func (ms ExportResponse) MarshalProto() ([]byte, error) { - return ms.orig.Marshal() + size := internal.SizeProtoOrigExportProfilesServiceResponse(ms.orig) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportProfilesServiceResponse(ms.orig, buf) + return buf, nil } // UnmarshalProto unmarshalls ExportResponse from proto bytes. func (ms ExportResponse) UnmarshalProto(data []byte) error { - return ms.orig.Unmarshal(data) + return internal.UnmarshalProtoOrigExportProfilesServiceResponse(ms.orig, data) } // MarshalJSON marshals ExportResponse into JSON bytes. diff --git a/pdata/ptrace/pb.go b/pdata/ptrace/pb.go index a3c78be27c1..59b186bd2c9 100644 --- a/pdata/ptrace/pb.go +++ b/pdata/ptrace/pb.go @@ -13,25 +13,26 @@ var _ MarshalSizer = (*ProtoMarshaler)(nil) type ProtoMarshaler struct{} func (e *ProtoMarshaler) MarshalTraces(td Traces) ([]byte, error) { - pb := internal.TracesToProto(internal.Traces(td)) - return pb.Marshal() + size := internal.SizeProtoOrigExportTraceServiceRequest(td.getOrig()) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportTraceServiceRequest(td.getOrig(), buf) + return buf, nil } func (e *ProtoMarshaler) TracesSize(td Traces) int { - pb := internal.TracesToProto(internal.Traces(td)) - return pb.Size() + return internal.SizeProtoOrigExportTraceServiceRequest(td.getOrig()) } func (e *ProtoMarshaler) ResourceSpansSize(rs ResourceSpans) int { - return rs.orig.Size() + return internal.SizeProtoOrigResourceSpans(rs.orig) } func (e *ProtoMarshaler) ScopeSpansSize(ss ScopeSpans) int { - return ss.orig.Size() + return internal.SizeProtoOrigScopeSpans(ss.orig) } func (e *ProtoMarshaler) SpanSize(span Span) int { - return span.orig.Size() + return internal.SizeProtoOrigSpan(span.orig) } type ProtoUnmarshaler struct{} diff --git a/pdata/ptrace/ptraceotlp/request.go b/pdata/ptrace/ptraceotlp/request.go index 60f8e233bfc..2b2a76ba52f 100644 --- a/pdata/ptrace/ptraceotlp/request.go +++ b/pdata/ptrace/ptraceotlp/request.go @@ -42,12 +42,16 @@ func NewExportRequestFromTraces(td ptrace.Traces) ExportRequest { // MarshalProto marshals ExportRequest into proto bytes. func (ms ExportRequest) MarshalProto() ([]byte, error) { - return ms.orig.Marshal() + size := internal.SizeProtoOrigExportTraceServiceRequest(ms.orig) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportTraceServiceRequest(ms.orig, buf) + return buf, nil } // UnmarshalProto unmarshalls ExportRequest from proto bytes. func (ms ExportRequest) UnmarshalProto(data []byte) error { - if err := ms.orig.Unmarshal(data); err != nil { + err := internal.UnmarshalProtoOrigExportTraceServiceRequest(ms.orig, data) + if err != nil { return err } otlp.MigrateTraces(ms.orig.ResourceSpans) diff --git a/pdata/ptrace/ptraceotlp/response.go b/pdata/ptrace/ptraceotlp/response.go index 14165eefeb1..7285a6346d0 100644 --- a/pdata/ptrace/ptraceotlp/response.go +++ b/pdata/ptrace/ptraceotlp/response.go @@ -12,12 +12,15 @@ import ( // MarshalProto marshals ExportResponse into proto bytes. func (ms ExportResponse) MarshalProto() ([]byte, error) { - return ms.orig.Marshal() + size := internal.SizeProtoOrigExportTraceServiceResponse(ms.orig) + buf := make([]byte, size) + _ = internal.MarshalProtoOrigExportTraceServiceResponse(ms.orig, buf) + return buf, nil } // UnmarshalProto unmarshalls ExportResponse from proto bytes. func (ms ExportResponse) UnmarshalProto(data []byte) error { - return ms.orig.Unmarshal(data) + return internal.UnmarshalProtoOrigExportTraceServiceResponse(ms.orig, data) } // MarshalJSON marshals ExportResponse into JSON bytes.