From 1358a9d46008655b565048370e922fed0f43394b Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Tue, 15 Nov 2016 14:35:00 -0800 Subject: [PATCH] grpcproxy: copy range request before storing in cache Reused Range requests would have Serialized overwritten with 'true'. Was failing on TestV3LeaseSwitch. --- proxy/grpcproxy/kv.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/proxy/grpcproxy/kv.go b/proxy/grpcproxy/kv.go index d256f09b1..b769272eb 100644 --- a/proxy/grpcproxy/kv.go +++ b/proxy/grpcproxy/kv.go @@ -51,9 +51,10 @@ func (p *kvProxy) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRespo } // cache linearizable as serializable - r.Serializable = true + req := *r + req.Serializable = true gresp := (*pb.RangeResponse)(resp.Get()) - p.cache.Add(r, gresp) + p.cache.Add(&req, gresp) return gresp, nil } @@ -79,9 +80,9 @@ func (p *kvProxy) txnToCache(reqs []*pb.RequestOp, resps []*pb.ResponseOp) { rdr := reqs[i].GetRequestDeleteRange() p.cache.Invalidate(rdr.Key, rdr.RangeEnd) case *pb.ResponseOp_ResponseRange: - req := reqs[i].GetRequestRange() + req := *(reqs[i].GetRequestRange()) req.Serializable = true - p.cache.Add(req, tv.ResponseRange) + p.cache.Add(&req, tv.ResponseRange) } } }