Skip to content

Commit 600d2bf

Browse files
committed
Return commit index when shard errors occur
1 parent 28b9b34 commit 600d2bf

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

kv/shard_router.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,20 +59,32 @@ func (s *ShardRouter) process(reqs []*pb.Request, fn func(*routerGroup, []*pb.Re
5959
}
6060

6161
var max uint64
62+
var firstErr error
6263
for gid, rs := range grouped {
6364
g, ok := s.getGroup(gid)
6465
if !ok {
65-
return nil, errors.Wrapf(ErrInvalidRequest, "unknown group %d", gid)
66+
err := errors.Wrapf(ErrInvalidRequest, "unknown group %d", gid)
67+
if firstErr == nil {
68+
firstErr = err
69+
}
70+
continue
6671
}
6772
r, err := fn(g, rs)
6873
if err != nil {
69-
return nil, errors.WithStack(err)
74+
if firstErr == nil {
75+
firstErr = errors.WithStack(err)
76+
}
77+
continue
7078
}
7179
if r.CommitIndex > max {
7280
max = r.CommitIndex
7381
}
7482
}
75-
return &TransactionResponse{CommitIndex: max}, nil
83+
resp := &TransactionResponse{CommitIndex: max}
84+
if firstErr != nil {
85+
return resp, firstErr
86+
}
87+
return resp, nil
7688
}
7789

7890
func (s *ShardRouter) getGroup(id uint64) (*routerGroup, bool) {

0 commit comments

Comments
 (0)