Skip to content

Informer ReflectorRunnable doesn't recover from "Too large resource version" #2190

@haoming-db

Description

@haoming-db

Describe the bug
Informer ReflectorRunnable doesn't recover from "Too large resource version".
ApiException.getResponseBody is like:

{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Timeout: Too large resource version: 5399771, current: 5399139","reason":"Timeout","details":{"causes":[{"reason":"ResourceVersionTooLarge","message":"Too large resource version"}],"retryAfterSeconds":1},"code":504}

Based on my understanding, this could happen at list call when the resource version param is too large for that API server / ETCD instance.
We should set isLastSyncResourceVersionUnavailable = true; in this case.
See go client: kubernetes/client-go@ec46b97

Client Version
All versions including 13 and 14.

Kubernetes Version
1.21

Java Version
n/a

To Reproduce
Run informer and make API server return ResourceVersionTooLarge.

Expected behavior
Set isLastSyncResourceVersionUnavailable and redo consistent read from ETCD.

KubeConfig
n/a

Server (please complete the following information):
n/a

Additional context
n/a

Metadata

Metadata

Assignees

Labels

lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions