Marek Siarkowicz
e810084a4b
Prevent watch cache starvation, by moving its watch to separate RPC and add a SeparateCacheWatchRPC feature flag to disable this behavior
...
Kubernetes-commit: 31d404b182d2985ce0d3c43f75d80c29a708beda
2024-02-27 11:25:42 +01:00
Sunil Shivanand
9ffd1e2039
Add apiserver_watch_cache_read_wait metric to cache refresh time
...
Signed-off-by: Sunil Shivanand <padlar@live.com>
Kubernetes-commit: e6ed0f37c65fb22c16f5afa408bc4de166070ebc
2024-02-08 12:39:50 +01:00
Lukasz Szaszkiewicz
e53bac21d8
storage/watch_cache: rework getAllEventsSinceLocked
...
Kubernetes-commit: ecaf2093f51fed5f544520b0ac00fb33a474b7f5
2024-02-26 12:22:05 +01:00
Marek Siarkowicz
9002dac854
Implement ConsistentListFromCache feature gate
...
Request bookmark every 100ms when there is at least one request blocked on revision not present in watch cache.
Kubernetes-commit: 39bb8f4bb1d013937aceac6c387563ffe13545c5
2023-06-06 15:49:46 +02:00
Marek Siarkowicz
23cd6bbea9
Fix TestConditionalProgressRequester and TestWaitUntilFreshAndListTimeout flakes
...
Kubernetes-commit: c1decb6763d2abf76d96aee8641ad56a23e0ba52
2023-07-12 13:36:51 +02:00
Marek Siarkowicz
cd751eb82e
Implement conditionalProgressRequester that allows requesting watch progress notification if watch cache is not fresh
...
Kubernetes-commit: 98461be8ffa7383152c442414a16adb217e98080
2023-07-10 18:10:49 +02:00
David Ashpole
aa161f2fc0
migrate apiserver utiltrace usage to component-base/tracing
...
Kubernetes-commit: de26b9023f2872c5cd7e15fad5dd5ab649222c13
2022-10-20 18:15:38 +00:00
viveksahu26
6cb2fda0ab
fix warnings or linter errors
...
Signed-off-by: viveksahu26 <vivekkumarsahu650@gmail.com>
Kubernetes-commit: 386bc4a7fa3e975cb247d300fdc5ad1b14a15605
2022-09-05 19:10:43 +05:30
Andy Goldstein
7eb011f596
watch cache: metrics: objectType -> group resource
...
Use the group resource instead of objectType in watch cache metrics,
because all CustomResources are grouped together as
*unstructured.Unstructured, instead of 1 entry per type.
Signed-off-by: Andy Goldstein <andy.goldstein@redhat.com>
Kubernetes-commit: d08b69e8d35a5aa73a178c508f9b0e1ad74b882d
2022-08-11 15:51:21 -04:00
Wojciech Tyczyński
2049cfbb9e
Adjust watch channel sizes in watchcache
...
Kubernetes-commit: 0db5c05bdb8bbc510307a48cbade712583bb009e
2022-04-28 11:56:41 +02:00
Steve Kuznetsov
80256820ce
storage: move the APIObjectVersioner definition to storage
...
The means by which we extract and parse the version of an API object is
not specific to etcd3. In order to allow for a generic suite of tests
against any storage.Interface imlpementation, we need this logic to live
outside of the etcd3 package, or import cycles will exist.
Signed-off-by: Steve Kuznetsov <skuznets@redhat.com>
Kubernetes-commit: 3939f3003e9605c06f65e64d1fc6f94b294f9d97
2022-05-11 07:44:21 -07:00
Madhav Jivrajani
ffc1b941d4
cacher: Minor cleanup and refactor of code and tests
...
* Remove linter warnings.
* Cancel contexts to avoid leaks.
* Rename a few XXXThreadUnsafe to XXXLocked to
maintain consistency.
* A few are still called XXXThreadUnsafe mainly
because those are safe to be called from the
perspective that only one gorotuine will access
them - not really called under a lock.
Signed-off-by: Madhav Jivrajani <madhav.jiv@gmail.com>
Kubernetes-commit: c3081b48759db1f05a446f2acca7e05c4511ce2e
2022-02-10 13:44:34 +05:30
Madhav Jivrajani
4f2ee5cf42
cacher: Use watchCacheInterval to reduce lock contention
...
- Modify GetAllEventsSinceThreadUnsafe to return a watchCacheInterval
- Modify Watch() to compute a watchCacheInterval rather than a slice
of all "initEvents" and pass this interval to process()
- Use interval::Next() to obtain events to process rather than obtain
them all at once
- Modify tests accordingly to use interval
- On invalidation, stop processing and stop the watch.
- Make indexValidator injectable for testing
- Add unit test for verifying the behaviour of stopping the watch.
Signed-off-by: Madhav Jivrajani <madhav.jiv@gmail.com>
Kubernetes-commit: 7f2aa7ad3a61a52d0a780f904b291d063399c28a
2021-10-05 15:52:09 +05:30
Wojciech Tyczyński
93c06a1426
Minor watchcache cleanup
...
Kubernetes-commit: ace55542575fb098b3e413692bbe2bc20d2348ba
2021-10-29 14:06:49 +02:00
Mike Spreitzer
889106eff7
Add metrics about handling LIST requests
...
Add metrics that illuminate the costs of handling LIST requests.
Kubernetes-commit: bf424292db185546c474b27b963fd27bdbafc72f
2021-09-01 18:18:23 -04:00
wojtekt
b898581360
Migrate to k8s.io/utils/clock in apiserver
...
Kubernetes-commit: 859a98c0358610e2c127cd2fba1be601ca975188
2021-09-14 20:36:07 +02:00
Ken Sipe
3c3ae0913c
fixing unwanted editor changes
...
Signed-off-by: Ken Sipe <kensipe@gmail.com>
Kubernetes-commit: 3de47dc05853131dcfc588bf2043207487cdd7c4
2020-06-25 17:31:38 -05:00
Ken Sipe
b60943f03a
fix S1019 use of make
...
Signed-off-by: Ken Sipe <kensipe@gmail.com>
Kubernetes-commit: a4d05d51d95d30ebe90ec8f652c9a794caa44d53
2020-06-25 17:26:42 -05:00
Ken Sipe
92af261bb8
fix SA2006 value of err not used
...
Signed-off-by: Ken Sipe <kensipe@gmail.com>
Kubernetes-commit: a549d0a75e3a09d26f3a316982ff3711be4ed1d2
2020-06-25 17:23:37 -05:00
gongguan
1da8aeae17
improve Clock as Cacher Config
...
Kubernetes-commit: 0f7de876a5e931a57ba6347b81e8e28d360c788a
2020-06-15 23:57:11 +08:00
Wojciech Tyczynski
54e40d4b2d
Revert "Revert "Rely on default watch cache capacity and ignore its requested size""
...
Kubernetes-commit: 7787ebc85b87eb7bc00f234f4e52eed3d987d5dd
2020-05-27 14:19:38 +02:00
wojtekt
8371df6187
Watch should return "too old RV" if it can't serve it.
...
Kubernetes-commit: ef1e5b6d3ac25431d890bfe4f540d9aa956a856d
2020-05-25 20:46:27 +02:00
Jordan Liggitt
d501f7b597
Revert "Rely on default watch cache capacity and ignore its requested size"
...
This reverts PR 91260
Kubernetes-commit: 6249f287e1d3d9fb63b60961c8625a82d7db360e
2020-05-23 09:21:22 -04:00
wojtekt
31ffec3302
Rely on default watch cache capacity and ignore its requested size
...
Kubernetes-commit: 99dff90d613e2014873dc2fae0a00acaf95c3bd2
2020-05-19 18:13:28 +02:00
louisgong
4c8b97679c
Use dynamic size watch-cache.
...
If all cached events occur inside eventFreshDuration, increase cache capacity by 2x.
Decrease cache capacity by 2x when recent half events occur outside eventFreshDuration.
Kubernetes-commit: 56407b656c7acf6039cead0192070429e53a0c70
2020-04-12 17:22:38 +08:00
shaloulcy
2c701b633b
validate storage cache indexers
...
Signed-off-by: shaloulcy <lcy041536@gmail.com>
Kubernetes-commit: fa9ba80a67deeb9089e1be8ebac21063ebc07904
2020-02-05 12:08:14 +08:00
shaloulcy
6099d76e39
add indexer for storage cacher
...
Signed-off-by: shaloulcy <lcy041536@gmail.com>
Kubernetes-commit: 87582e2c3c1cb8c8e10ec05a4700f865c759b7b2
2019-11-19 16:52:07 +08:00
wojtekt
a76d249b96
Tweak use of caching objects
...
Kubernetes-commit: c5170dfb66749b60a4a1611dc7b4a39e64b33e2e
2019-10-16 09:05:13 +02:00
Joe Betz
1b75e5416d
Use same 'minimum resource version' semantics both when watch cache is enabled and disabled
...
Kubernetes-commit: 1406f7adf20a9ceaf5b8270ec9a61dd9e450ae8a
2018-12-04 16:55:59 -08:00
Wojciech Tyczynski
20ecceebd3
Cache serializations
...
Kubernetes-commit: 25a728ae5eb0ae067d21679fad915c0555242470
2019-08-25 09:55:52 +02:00
wojtekt
6d99094b88
Move APIObjectVersioner
...
Kubernetes-commit: fd819f8fdc2528249efc94c18da434b61fe87925
2019-06-28 13:58:08 +02:00
wojtekt
a3fd374f10
Reduce contention in watchcache by not calling event handler under lock
...
Kubernetes-commit: e6e43828284c6e83cf2b4658fa377b4cc7dec0c3
2019-04-17 12:53:36 +02:00
Jordan Liggitt
80029a760c
Deprecate and remove use of alpha metadata.initializers field, remove IncludeUninitialized options
...
Kubernetes-commit: 17aa60686ebe5fd04b4fe6f442dc36a8d70b6730
2019-01-17 09:19:28 -05:00
wojtekt
d3536986da
Fix unnecessary too-old-errors from watch cache
...
Kubernetes-commit: 12021725922efc3a80c8a0673b28826a524eb0a0
2018-08-30 12:28:44 +02:00
fisherxu
9ffd3e56ff
move cacher in separate dir
...
Kubernetes-commit: dbb448bbdcb9e440eee57024ffa5f1698956a054
2018-05-30 20:44:31 +08:00