-
Notifications
You must be signed in to change notification settings - Fork 10.2k
Open
Description
What would you like to be added?
Kubernetes 1.34 will start using Range WithKeysOnly. Main reason to use this method is to reduce the overhead of loading values in memory when they are not needed. While using WithKeysOnly avoids transferring them to client, it doesn't help with etcd memory
Noticed that it loads values in memory just to throw them out little later:
etcd/server/etcdserver/txn/range.go
Lines 150 to 152 in 810d696
if r.KeysOnly { | |
rr.KVs[i].Value = nil | |
} |
TODO:
- Add thorough range tests we don't break it.
- Identify places that use value in etcd server. For example when sorting by value
- Implement support for KeysOnly method for keyindex
- Use KeysOnly method when we don't need value, like when we don't sort by it.
- Benchmark to show improvement
Please note this task is complicated and not good for first contributor.
Why is this needed?
Align with user expectation that using WithKeysOnly is more efficient on server.