Skip to content

Commit 08b1b97

Browse files
committed
couple fixes
1 parent a12502c commit 08b1b97

File tree

2 files changed

+32
-32
lines changed

2 files changed

+32
-32
lines changed

ddtrace/tracer/payload.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ type traceChunk struct {
173173
droppedTrace bool `msg:"droppedTrace"`
174174

175175
// the ID of the trace to which all spans in this chunk belong
176-
traceID [16]byte `msg:"traceID"`
176+
traceID []byte `msg:"traceID"`
177177

178178
// the optional string decision maker (previously span tag _dd.p.dm)
179179
samplingMechanism string `msg:"samplingMechanism,omitempty"`

ddtrace/tracer/payload_v1.go

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -190,15 +190,17 @@ func (p *payloadV1) push(t spanList) (stats payloadStats, err error) {
190190
{key: streamingKey{isString: false, idx: 9}, value: anyValue{valueType: StringValueType, value: p.appVersion}}, // appVersion
191191
}
192192

193-
p.chunks = append(p.chunks, traceChunk{
193+
tc := traceChunk{
194194
priority: int32(priority),
195195
origin: origin,
196196
attributes: keyValueList{},
197197
spans: t,
198-
traceID: t[0].Context().traceID,
199-
})
198+
traceID: t[0].Context().traceID[:],
199+
}
200+
p.chunks = append(p.chunks, tc)
200201
wr := msgp.NewWriter(&p.buf)
201-
err = EncodeSpanList(t, wr, p)
202+
203+
err = tc.EncodeMsg(wr, p)
202204
if err != nil {
203205
return payloadStats{}, err
204206
}
@@ -376,10 +378,11 @@ func (kv keyValueList) EncodeMsg(e *msgp.Writer, p *payloadV1) error {
376378
}
377379

378380
func (t *traceChunk) EncodeMsg(e *msgp.Writer, p *payloadV1) error {
381+
e.WriteInt32(11) // write msgp index for `chunks`
382+
379383
kv := keyValueList{
380384
{key: streamingKey{isString: false, idx: 1}, value: anyValue{valueType: IntValueType, value: int64(t.priority)}}, // priority
381385
{key: streamingKey{isString: false, idx: 2}, value: anyValue{valueType: StringValueType, value: t.origin}}, // origin
382-
{key: streamingKey{isString: false, idx: 4}, value: anyValue{valueType: keyValueListType, value: t.spans}}, // spans
383386
{key: streamingKey{isString: false, idx: 5}, value: anyValue{valueType: BoolValueType, value: t.droppedTrace}}, // droppedTrace
384387
{key: streamingKey{isString: false, idx: 6}, value: anyValue{valueType: BytesValueType, value: t.traceID}}, // traceID
385388
{key: streamingKey{isString: false, idx: 7}, value: anyValue{valueType: StringValueType, value: t.samplingMechanism}}, // samplingMechanism
@@ -389,22 +392,24 @@ func (t *traceChunk) EncodeMsg(e *msgp.Writer, p *payloadV1) error {
389392
for k, v := range t.attributes {
390393
attr = append(attr, keyValue{key: streamingKey{isString: false, idx: uint32(k)}, value: anyValue{valueType: getAnyValueType(v), value: v}})
391394
}
392-
kv = append(kv, keyValue{key: streamingKey{isString: false, idx: 3}, value: anyValue{valueType: ArrayValueType, value: attr}}) // attributes
395+
kv = append(kv, keyValue{key: streamingKey{isString: false, idx: 3}, value: anyValue{valueType: keyValueListType, value: attr}}) // attributes
396+
397+
err := kv.EncodeMsg(e, p)
398+
if err != nil {
399+
return err
400+
}
393401

394-
return kv.EncodeMsg(e, p)
402+
return EncodeSpanList(t.spans, e, p)
395403
}
396404

397-
// EncodeMsg writes the contents of a list of spans into `p.buf`
398-
// Span, SpanLink, and SpanEvent structs are different for v0.4 and v1.0.
399-
// For v1 we need to manually encode the spans, span links, and span events
400-
// if we don't want to do extra allocations.
401405
func EncodeSpanList(s spanList, e *msgp.Writer, p *payloadV1) error {
406+
e.WriteInt32(4) // write msgp index for `spans`
407+
402408
err := e.WriteArrayHeader(uint32(len(s)))
403409
if err != nil {
404410
return msgp.WrapError(err)
405411
}
406412

407-
e.WriteInt32(4)
408413
for _, span := range s {
409414
if span == nil {
410415
err := e.WriteNil()
@@ -622,26 +627,21 @@ func (p *payloadV1) Decode(b []byte) ([]byte, error) {
622627
p.strings = newStringTable()
623628
}
624629

625-
fields, o, err := msgp.ReadMapHeaderBytes(b)
630+
fields, o, err := msgp.ReadArrayHeaderBytes(b)
626631
if err != nil {
627632
return o, err
628633
}
629634

630635
for fields > 0 {
631636
fields--
632637

633-
f, o, err := msgp.ReadUint32Bytes(b)
638+
f, o, err := msgp.ReadInt32Bytes(o)
634639
if err != nil {
635640
return o, err
636641
}
637642

638643
switch f {
639-
case 1: // stringTable
640-
o, err = DecodeStringTable(o, p.strings)
641-
if err != nil {
642-
return o, err
643-
}
644-
644+
// we don't care for the string table, so we don't decode it
645645
case 2: // containerID
646646
p.containerID, o, err = DecodeStreamingString(o, p.strings)
647647
if err != nil {
@@ -738,7 +738,7 @@ func DecodeStreamingString(b []byte, strings *stringTable) (string, []byte, erro
738738
}
739739

740740
// else, try reading as a string, then add to the string table
741-
str, o, err := msgp.ReadStringBytes(b)
741+
str, o, err := msgp.ReadStringBytes(o)
742742
if err != nil {
743743
return "", nil, msgp.WrapError(err, "unable to read streaming string")
744744
}
@@ -783,7 +783,7 @@ func DecodeAnyValue(b []byte, strings *stringTable) (anyValue, []byte, error) {
783783
}
784784
return anyValue{valueType: BytesValueType, value: b}, o, nil
785785
case ArrayValueType:
786-
len, o, err := msgp.ReadBytesHeader(o)
786+
len, o, err := msgp.ReadArrayHeaderBytes(o)
787787
if err != nil {
788788
return anyValue{}, o, err
789789
}
@@ -807,7 +807,7 @@ func DecodeAnyValue(b []byte, strings *stringTable) (anyValue, []byte, error) {
807807
}
808808

809809
func DecodeKeyValueList(b []byte, strings *stringTable) (keyValueList, []byte, error) {
810-
len, o, err := msgp.ReadBytesHeader(b)
810+
len, o, err := msgp.ReadMapHeaderBytes(b)
811811
if err != nil {
812812
return nil, o, err
813813
}
@@ -833,22 +833,22 @@ func DecodeKeyValueList(b []byte, strings *stringTable) (keyValueList, []byte, e
833833
}
834834

835835
func DecodeTraceChunks(b []byte, strings *stringTable) ([]traceChunk, []byte, error) {
836-
len, o, err := msgp.ReadArrayHeaderBytes(b)
836+
len, o, err := msgp.ReadMapHeaderBytes(b)
837837
if err != nil {
838838
return nil, o, err
839839
}
840840

841841
ret := make([]traceChunk, len)
842842
for i := range len {
843-
fields, o, err := msgp.ReadMapHeaderBytes(o)
843+
fields, o, err := msgp.ReadArrayHeaderBytes(o)
844844
if err != nil {
845845
return nil, o, err
846846
}
847847
tc := traceChunk{}
848848
for fields > 0 {
849849
fields--
850850

851-
f, o, err := msgp.ReadUint32Bytes(b)
851+
f, o, err := msgp.ReadUint32Bytes(o)
852852
if err != nil {
853853
return ret, o, err
854854
}
@@ -889,7 +889,7 @@ func DecodeTraceChunks(b []byte, strings *stringTable) ([]traceChunk, []byte, er
889889
if err != nil {
890890
return ret, o, err
891891
}
892-
tc.traceID = [16]byte(s)
892+
tc.traceID = []byte(s)
893893
case 7: // samplingMechanism
894894
s, o, err := msgp.ReadStringBytes(o)
895895
if err != nil {
@@ -928,7 +928,7 @@ func DecodeSpan(b []byte, strings *stringTable) (*Span, []byte, error) {
928928
for fields > 0 {
929929
fields--
930930

931-
f, o, err := msgp.ReadUint32Bytes(b)
931+
f, o, err := msgp.ReadUint32Bytes(o)
932932
if err != nil {
933933
return &sp, o, err
934934
}
@@ -1091,11 +1091,11 @@ func DecodeSpanLinks(b []byte, strings *stringTable) ([]SpanLink, []byte, error)
10911091
}
10921092
sl.Tracestate = s
10931093
case 5: // flags
1094-
s, o, err := msgp.ReadInt32Bytes(o)
1094+
s, o, err := msgp.ReadUint32Bytes(o)
10951095
if err != nil {
10961096
return ret, o, err
10971097
}
1098-
sl.Flags = uint32(s)
1098+
sl.Flags = s
10991099
}
11001100
}
11011101
ret[i] = sl
@@ -1118,7 +1118,7 @@ func DecodeSpanEvents(b []byte, strings *stringTable) ([]spanEvent, []byte, erro
11181118
for fields > 0 {
11191119
fields--
11201120

1121-
f, o, err := msgp.ReadUint32Bytes(b)
1121+
f, o, err := msgp.ReadUint32Bytes(o)
11221122
if err != nil {
11231123
return ret, o, err
11241124
}

0 commit comments

Comments
 (0)