Skip to content

Client Cache breaks Resumable guarantee #20488

@serathius

Description

@serathius

Bug report criteria

What happened?

Cache is a experimental library https://github.com/etcd-io/etcd/tree/main/cache developed as part of GSoC #19371

Run robustness test on latest implementation of cache #20354

If found the issue

    logger.go:146: 2025-08-14T11:30:16.618+0200 ERROR   Broke watch guarantee   
{
  "guarantee": "resumable",
  "client": 3,
  "request": {
    "Key": "",
    "Revision": 989,
    "WithPrefix": true,
    "WithProgressNotify": false,
    "WithPrevKV": false
  },
  "got-event": {
    "Type": "put-operation",
    "Key": "key42",
    "Value": {
      "Value": "1556"
    },
    "Revision": 1540
  },
  "want-event": {
    "Type": "put-operation",
    "Key": "key13",
    "Value": {
      "Value": "1004"
    },
    "Revision": 989
  }

What did you expect to happen?

Cache should provide the same guarantees as etcd.

How can we reproduce it (as minimally and precisely as possible)?

Pull the #20354

And run:

make gofail-enable
make 
make gofail-disable
GO_TEST_FLAGS='--count=1 -v --run TestRobustnessExploratory  --failfast' make test-robustness

/cc @MadhavJivrajani @apullo777

/assign @apullo777

Anything else we need to know?

No response

Etcd version (please run commands below)

$ etcd --version
# paste output here

$ etcdctl version
# paste output here

Etcd configuration (command line flags or environment variables)

paste your configuration here

Etcd debug information (please run commands below, feel free to obfuscate the IP address or FQDN in the output)

$ etcdctl member list -w table
# paste output here

$ etcdctl --endpoints=<member list> endpoint status -w table
# paste output here

Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions