consul/proto-public
R.B. Boyer c029b20615
v2: ensure the controller caches are fully populated before first use (#20421)
The new controller caches are initialized before the DependencyMappers or the 
Reconciler run, but importantly they are not populated. The expectation is that 
when the WatchList call is made to the resource service it will send an initial 
snapshot of all resources matching a single type, and then perpetually send 
UPSERT/DELETE events afterward. This initial snapshot will cycle through the 
caching layer and will catch it up to reflect the stored data.

Critically the dependency mappers and reconcilers will race against the restoration 
of the caches on server startup or leader election. During this time it is possible a
 mapper or reconciler will use the cache to lookup a specific relationship and 
not find it. That very same reconciler may choose to then recompute some 
persisted resource and in effect rewind it to a prior computed state.

Change

- Since we are updating the behavior of the WatchList RPC, it was aligned to 
  match that of pbsubscribe and pbpeerstream using a protobuf oneof instead of the enum+fields option.

- The WatchList rpc now has 3 alternating response events: Upsert, Delete, 
  EndOfSnapshot. When set the initial batch of "snapshot" Upserts sent on a new 
  watch, those operations will be followed by an EndOfSnapshot event before beginning 
  the never-ending sequence of Upsert/Delete events.

- Within the Controller startup code we will launch N+1 goroutines to execute WatchList 
  queries for the watched types. The UPSERTs will be applied to the nascent cache
   only (no mappers will execute).

- Upon witnessing the END operation, those goroutines will terminate.

- When all cache priming routines complete, then the normal set of N+1 long lived 
watch routines will launch to officially witness all events in the system using the 
primed cached.
2024-02-02 15:11:05 -06:00
..
annotations/ratelimit NET-5824 Exported services api (#20015) 2024-01-23 10:06:59 +05:30
pbacl In-Memory gRPC (#19942) 2024-01-12 11:54:07 -05:00
pbauth/v2beta1 Handle NamespaceTrafficPermissions when reconciling TrafficPermissions (#20407) 2024-01-30 21:31:25 +00:00
pbcatalog/v2beta1 Remove V2 PeerName field from pbresource.Tenancy (#19865) 2024-01-29 15:08:31 -05:00
pbconnectca In-Memory gRPC (#19942) 2024-01-12 11:54:07 -05:00
pbdataplane In-Memory gRPC (#19942) 2024-01-12 11:54:07 -05:00
pbdns In-Memory gRPC (#19942) 2024-01-12 11:54:07 -05:00
pbhcp/v2 hcp.v2.TelemetryState resource and controller implementation (#20257) 2024-01-31 14:47:05 -05:00
pbmesh/v2beta1 Use a full EndpointRef on ComputedRoutes targets instead of just the ID (#20400) 2024-01-30 16:25:44 -05:00
pbmulticluster/v2 Change the multicluster group to v2 (#20430) 2024-02-01 12:08:26 -05:00
pbresource v2: ensure the controller caches are fully populated before first use (#20421) 2024-02-02 15:11:05 -06:00
pbserverdiscovery In-Memory gRPC (#19942) 2024-01-12 11:54:07 -05:00
pbtenancy/v2beta1 license: MPL'ify proto-public (#20143) 2024-01-10 11:05:12 -06:00
.copywrite.hcl license: MPL'ify proto-public (#20143) 2024-01-10 11:05:12 -06:00
LICENSE Make proto-public license MPL (#18531) 2023-08-21 12:31:54 -05:00
buf.gen.yaml In-Memory gRPC (#19942) 2024-01-12 11:54:07 -05:00
buf.lock Add Kubebuilder tags to Gatewayclassconfig proto messages (#19725) 2023-11-28 14:46:11 -06:00
buf.yaml Add Kubebuilder tags to Gatewayclassconfig proto messages (#19725) 2023-11-28 14:46:11 -06:00
go.mod [NET-7009] security: update x/crypto to 0.17.0 (#20023) 2023-12-21 20:11:19 +00:00
go.sum [NET-7009] security: update x/crypto to 0.17.0 (#20023) 2023-12-21 20:11:19 +00:00