Skip to content

Commit b6026f1

Browse files
committed
if request id was not supplied in header, generate uuid
Signed-off-by: Nir Rozenbaum <[email protected]>
1 parent bc87672 commit b6026f1

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

pkg/epp/handlers/server.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
extProcPb "github.com/envoyproxy/go-control-plane/envoy/service/ext_proc/v3"
2727
envoyTypePb "github.com/envoyproxy/go-control-plane/envoy/type/v3"
2828
"github.com/go-logr/logr"
29+
"github.com/google/uuid"
2930
"google.golang.org/grpc/codes"
3031
"google.golang.org/grpc/status"
3132
"sigs.k8s.io/controller-runtime/pkg/log"
@@ -186,11 +187,18 @@ func (s *StreamingServer) Process(srv extProcPb.ExternalProcessor_ProcessServer)
186187

187188
switch v := req.Request.(type) {
188189
case *extProcPb.ProcessingRequest_RequestHeaders:
189-
if requestID := requtil.ExtractHeaderValue(v, requtil.RequestIdHeaderKey); len(requestID) > 0 {
190-
logger = logger.WithValues(requtil.RequestIdHeaderKey, requestID)
191-
loggerTrace = logger.V(logutil.TRACE)
192-
ctx = log.IntoContext(ctx, logger)
190+
requestID := requtil.ExtractHeaderValue(v, requtil.RequestIdHeaderKey)
191+
// request ID is a must for maintaining a state per request in plugins that hold internal state and use PluginState.
192+
// if request id was not supplied as a header, we generate it oursleves.
193+
if len(requestID) == 0 {
194+
requestID = uuid.NewString()
195+
loggerTrace.Info("RequestID header is not found in the request, generated a request id")
196+
reqCtx.Request.Headers[requtil.RequestIdHeaderKey] = requestID // update in headers so director can consume it
193197
}
198+
logger = logger.WithValues(requtil.RequestIdHeaderKey, requestID)
199+
loggerTrace = logger.V(logutil.TRACE)
200+
ctx = log.IntoContext(ctx, logger)
201+
194202
err = s.HandleRequestHeaders(reqCtx, v)
195203
case *extProcPb.ProcessingRequest_RequestBody:
196204
loggerTrace.Info("Incoming body chunk", "EoS", v.RequestBody.EndOfStream)

0 commit comments

Comments
 (0)