From 600d2bf0bf97a166c79d98c128b72efb0b5c3981 Mon Sep 17 00:00:00 2001 From: "Yoshiaki Ueda (bootjp)" Date: Mon, 15 Sep 2025 15:54:21 +0900 Subject: [PATCH] Return commit index when shard errors occur --- kv/shard_router.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/kv/shard_router.go b/kv/shard_router.go index 556860d..74050cb 100644 --- a/kv/shard_router.go +++ b/kv/shard_router.go @@ -59,20 +59,32 @@ func (s *ShardRouter) process(reqs []*pb.Request, fn func(*routerGroup, []*pb.Re } var max uint64 + var firstErr error for gid, rs := range grouped { g, ok := s.getGroup(gid) if !ok { - return nil, errors.Wrapf(ErrInvalidRequest, "unknown group %d", gid) + err := errors.Wrapf(ErrInvalidRequest, "unknown group %d", gid) + if firstErr == nil { + firstErr = err + } + continue } r, err := fn(g, rs) if err != nil { - return nil, errors.WithStack(err) + if firstErr == nil { + firstErr = errors.WithStack(err) + } + continue } if r.CommitIndex > max { max = r.CommitIndex } } - return &TransactionResponse{CommitIndex: max}, nil + resp := &TransactionResponse{CommitIndex: max} + if firstErr != nil { + return resp, firstErr + } + return resp, nil } func (s *ShardRouter) getGroup(id uint64) (*routerGroup, bool) {