diff --git a/replayer-agent/go.mod b/replayer-agent/go.mod index d5b7776..aa77c66 100644 --- a/replayer-agent/go.mod +++ b/replayer-agent/go.mod @@ -14,5 +14,6 @@ require ( github.com/spf13/viper v1.6.3 github.com/ugorji/go v1.1.7 // indirect go.uber.org/zap v1.15.0 + golang.org/x/sys v0.0.0-20190412213103-97732733099d gopkg.in/go-playground/validator.v8 v8.18.2 // indirect ) diff --git a/replayer-agent/logic/worker/replayer.go b/replayer-agent/logic/worker/replayer.go index 6f7b32a..77e682c 100644 --- a/replayer-agent/logic/worker/replayer.go +++ b/replayer-agent/logic/worker/replayer.go @@ -88,12 +88,14 @@ func (r *Replayer) ReplaySessionDoreplay(ctx context.Context, session *replaying timeHeader := fmt.Sprintf("\r\nSharingan-Replayer-Time: %d", session.CallFromInbound.OccurredAt) s := bytes.Split(request, []byte("\r\n")) if strings.Contains(string(s[0]), " HTTP/") { - // http: add at the second lineļ¼Œthe first line cannot be changed for 400 Bad Request + // http: add header at the second line of http inbound. the first line cannot be changed for 400 Bad Request s[0] = append(s[0], []byte(traceHeader+timeHeader)...) request = bytes.Join(s, []byte("\r\n")) } else { - // thrift: add at the end for the thrift inbound - request = append(request, []byte(traceHeader+timeHeader)...) + // thrift: add header at the first line of thrift inbound, for thrift request may be too large + traceHeader = fmt.Sprintf("Sharingan-Replayer-Traceid: %s\r\n", traceID) + timeHeader = fmt.Sprintf("Sharingan-Replayer-Time: %d\r\n", session.CallFromInbound.OccurredAt) + request = append([]byte(traceHeader+timeHeader), request...) } }