Skip to content

Commit bc8ac76

Browse files
committed
UPSTREAM: <carry>: add audit annotations to track etcd state
1 parent 25a7459 commit bc8ac76

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

staging/src/k8s.io/apiserver/pkg/storage/etcd3/etcd3retry/retry_etcdclient.go

+10
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package etcd3retry
22

33
import (
44
"context"
5+
"k8s.io/apiserver/pkg/audit"
6+
"strings"
57
"time"
68

79
etcdrpc "go.etcd.io/etcd/api/v3/v3rpc/rpctypes"
@@ -153,6 +155,8 @@ func OnError(ctx context.Context, backoff wait.Backoff, retriable func(error) (s
153155
var retry bool
154156
var retryCounter int
155157
err := backoffWithRequestContext(ctx, backoff, func() (bool, error) {
158+
startTime := time.Now()
159+
156160
err := fn()
157161
if retry {
158162
klog.V(1).Infof("etcd retry - counter: %v, lastErrLabel: %s lastError: %v, error: %v", retryCounter, lastErrLabel, lastErr, err)
@@ -162,6 +166,12 @@ func OnError(ctx context.Context, backoff wait.Backoff, retriable func(error) (s
162166
return true, nil
163167
}
164168

169+
// add an audit annotation if we hit a no leader condition so we can track this failure in post-processing CI steps.
170+
// We only mark the first time through. Hopefully there's enough traffic that it doesn't matter
171+
if strings.Contains(err.Error(), "no leader") {
172+
audit.AddAuditAnnotation(ctx, "apiserver.internal.openshift.io/no-leader", startTime.Format(time.RFC3339))
173+
}
174+
165175
lastErrLabel, retry = retriable(err)
166176
if retry {
167177
lastErr = err

0 commit comments

Comments
 (0)