Blocking Queries on ACL resources and Config Entries Unblock Too Often
- Dominant language
- Go
- Stars
- 30.1k
- Forks
- 4.6k
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 43
Description
#### Overview of the Issue
Internally our blocking query function uses the index reported in the `QueryMeta` struct to determine if the index is new enough to unblock and return the data back to the API caller.
All of the blocking queries issued within agent/consul/acl_endpoint.go and in agent/consul/config_endpoint.go set this index to be whatever value comes out of the "index" table for that type in memdb. This is done instead of setting it to the value of the max modify index of the data (for listings) or simple the modify index (for single object reads).
The ramifications of this are that we may unblock a query even when the underlying data we are looking at hasn't changed but other unrelated data has.
Real world implications are that our watches on config entries are likely to cause unnecessary churn through proxy configurations for Connect. There are likely other real world performance issues too.
Contributor guide
Assessment
This issue has not been assessed yet.