From 198ea77f1de283c5097392337d75d8e74b33335a Mon Sep 17 00:00:00 2001 From: Natalie Diaz Date: Tue, 3 Mar 2026 14:23:03 -0800 Subject: [PATCH 1/2] Add default response message type for v3 sparql --- internal/server/redis/processor.go | 4 ++++ internal/server/redis/processor_test.go | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/internal/server/redis/processor.go b/internal/server/redis/processor.go index bf1ac1897..1a7b397a0 100644 --- a/internal/server/redis/processor.go +++ b/internal/server/redis/processor.go @@ -18,6 +18,7 @@ import ( "context" "log/slog" + pb "github.com/datacommonsorg/mixer/internal/proto" pbv2 "github.com/datacommonsorg/mixer/internal/proto/v2" "github.com/datacommonsorg/mixer/internal/server/dispatcher" "github.com/datacommonsorg/mixer/internal/util" @@ -77,7 +78,10 @@ func newEmptyResponse(requestType dispatcher.RequestType) proto.Message { return &pbv2.ObservationResponse{} case dispatcher.TypeResolve: return &pbv2.ResolveResponse{} + case dispatcher.TypeSparql: + return &pb.QueryResponse{} default: + slog.Error("Unknown request type for caching", "requestType", requestType) return nil } } diff --git a/internal/server/redis/processor_test.go b/internal/server/redis/processor_test.go index 73cb694f6..fbba0fce3 100644 --- a/internal/server/redis/processor_test.go +++ b/internal/server/redis/processor_test.go @@ -20,6 +20,7 @@ import ( "testing" "time" + pb "github.com/datacommonsorg/mixer/internal/proto" pbv2 "github.com/datacommonsorg/mixer/internal/proto/v2" "github.com/datacommonsorg/mixer/internal/server/dispatcher" "github.com/datacommonsorg/mixer/internal/util" @@ -255,6 +256,11 @@ func TestNewEmptyResponse(t *testing.T) { requestType: dispatcher.TypeResolve, want: &pbv2.ResolveResponse{}, }, + { + name: "Sparql", + requestType: dispatcher.TypeSparql, + want: &pb.QueryResponse{}, + }, } for _, test := range tests { From 6895283ab0004d8dbe134300128d975ae3447e1c Mon Sep 17 00:00:00 2001 From: Natalie Diaz Date: Tue, 3 Mar 2026 14:37:38 -0800 Subject: [PATCH 2/2] propgate error --- internal/server/redis/processor.go | 22 +++++++++++++--------- internal/server/redis/processor_test.go | 3 ++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/internal/server/redis/processor.go b/internal/server/redis/processor.go index 1a7b397a0..199535161 100644 --- a/internal/server/redis/processor.go +++ b/internal/server/redis/processor.go @@ -16,6 +16,7 @@ package redis import ( "context" + "fmt" "log/slog" pb "github.com/datacommonsorg/mixer/internal/proto" @@ -40,7 +41,11 @@ func (processor *CacheProcessor) PreProcess(rc *dispatcher.RequestContext) (disp return dispatcher.Continue, nil } - cachedResponse := newEmptyResponse(rc.Type) + cachedResponse, err := newEmptyResponse(rc.Type) + if err != nil { + slog.Error("Skipping cache", "error", err) + return dispatcher.Continue, err + } if found, err := processor.client.GetCachedResponse(rc.Context, rc.OriginalRequest, cachedResponse); found { slog.Info("Cache hit", "originalRequest", rc.OriginalRequest) @@ -68,21 +73,20 @@ func (processor *CacheProcessor) PostProcess(rc *dispatcher.RequestContext) (dis } // newEmptyResponse returns a new empty response for the given request type. -func newEmptyResponse(requestType dispatcher.RequestType) proto.Message { +func newEmptyResponse(requestType dispatcher.RequestType) (proto.Message, error) { switch requestType { case dispatcher.TypeNode: - return &pbv2.NodeResponse{} + return &pbv2.NodeResponse{}, nil case dispatcher.TypeNodeSearch: - return &pbv2.NodeSearchResponse{} + return &pbv2.NodeSearchResponse{}, nil case dispatcher.TypeObservation: - return &pbv2.ObservationResponse{} + return &pbv2.ObservationResponse{}, nil case dispatcher.TypeResolve: - return &pbv2.ResolveResponse{} + return &pbv2.ResolveResponse{}, nil case dispatcher.TypeSparql: - return &pb.QueryResponse{} + return &pb.QueryResponse{}, nil default: - slog.Error("Unknown request type for caching", "requestType", requestType) - return nil + return nil, fmt.Errorf("unknown request type for caching: %v", requestType) } } diff --git a/internal/server/redis/processor_test.go b/internal/server/redis/processor_test.go index fbba0fce3..0e1f6b6be 100644 --- a/internal/server/redis/processor_test.go +++ b/internal/server/redis/processor_test.go @@ -265,7 +265,8 @@ func TestNewEmptyResponse(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - got := newEmptyResponse(test.requestType) + got, err := newEmptyResponse(test.requestType) + assert.NoError(t, err) assert.True(t, proto.Equal(test.want, got)) }) }