consul/lib
R.B. Boyer c81dc8c551
state: ensure that identical manual virtual IP updates result in not bumping the modify indexes (#21909)
The consul-k8s endpoints controller issues catalog register and manual virtual ip
updates without first checking to see if the updates would be effectively not
changing anything. This is supposed to be reasonable because the state store
functions do the check for a no-op update and should discard repeat updates so
that downstream blocking queries watching one of the resources don't fire
pointlessly (and CPU wastefully).

While this is true for the check/service/node catalog updates, it is not true for
the "manual virtual ip" updates triggered by the PUT /v1/internal/service-virtual-ip.
Forcing the connect injector pod to recycle while watching some lightly
modified FSM code can show that a lot of updates are of the update list of ips
from [A] to [A]. Immediately following this stray update you can see a lot of
activity in proxycfg and xds packages waking up due to blocking queries
triggered by this.

This PR skips updates that change nothing both:

- at the RPC layer before passing it to raft (ideally)
- if the write does make it through raft and get applied to the FSM (failsafe)
2024-11-22 11:16:38 -06:00
..
channels add DeliverLatest as common function for use by Manager and ProxyTracker Open (#19564) 2023-11-07 23:03:37 +00:00
decode [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
file [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
hoststats [CC-7434] Skip collecting data directory metrics in dev mode (#20521) 2024-02-07 16:59:06 -06:00
maps [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
mutex [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
retry [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
routine [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
semaphore [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
stringslice state: ensure that identical manual virtual IP updates result in not bumping the modify indexes (#21909) 2024-11-22 11:16:38 -06:00
template [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
testhelpers remove the skipping of slow tests in go-tests-ce and go-test-enterprise (#20139) 2024-01-10 20:39:34 -07:00
ttlcache [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
cluster.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
cluster_test.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
eof.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
eof_test.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
json.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
map_walker.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
map_walker_test.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
math.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
math_test.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
path.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
stop_context.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
stop_context_test.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
strings.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
telemetry.go Add an agent config option to diable per tenancy usage metrics. (#20976) 2024-04-11 15:20:09 -04:00
telemetry_test.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
translate.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
translate_test.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
useragent.go OSS -> CE (community edition) changes (#18517) 2023-08-22 09:46:03 -05:00
useragent_test.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00
uuid.go [COMPLIANCE] License changes (#18443) 2023-08-11 09:12:13 -04:00