m/n/c/curator: fix watch fail on context timeout
Fixes https://github.com/monogon-dev/monogon/issues/75.
Change-Id: Iefb772fa55499271e85fec500f50e6c77e49d05a
Reviewed-on: https://review.monogon.dev/c/monogon/+/326
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/core/curator/impl_leader.go b/metropolis/node/core/curator/impl_leader.go
index 79e57e2..3ebfcfb 100644
--- a/metropolis/node/core/curator/impl_leader.go
+++ b/metropolis/node/core/curator/impl_leader.go
@@ -54,6 +54,12 @@
if errors.Is(err, lostLeadership) {
return status.Error(codes.Unavailable, "lost leadership"), true
}
+ if errors.Is(err, context.DeadlineExceeded) {
+ return status.Error(codes.DeadlineExceeded, err.Error()), true
+ }
+ if errors.Is(err, context.Canceled) {
+ return status.Error(codes.Canceled, err.Error()), true
+ }
return err, false
}
diff --git a/metropolis/node/core/curator/impl_leader_curator.go b/metropolis/node/core/curator/impl_leader_curator.go
index 8d14582..1043d58 100644
--- a/metropolis/node/core/curator/impl_leader_curator.go
+++ b/metropolis/node/core/curator/impl_leader_curator.go
@@ -47,6 +47,8 @@
if rpcErr, ok := rpcError(err); ok {
return rpcErr
}
+ // TODO(q3k): log err
+ return status.Error(codes.Unavailable, "internal error")
}
node := v.(*Node)
ev := &cpb.WatchEvent{