From de63b027ac2fd78c5cf9626279d8e42419af853b Mon Sep 17 00:00:00 2001 From: Forrest <30576607+fspmarshall@users.noreply.github.com> Date: Wed, 24 Jul 2024 09:20:10 -0700 Subject: [PATCH] fix access request cache test race (#44528) --- lib/services/access_request_cache.go | 7 +++++++ lib/services/access_request_cache_test.go | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/lib/services/access_request_cache.go b/lib/services/access_request_cache.go index 1c23bce55d921..277358414f415 100644 --- a/lib/services/access_request_cache.go +++ b/lib/services/access_request_cache.go @@ -352,6 +352,7 @@ func (c *AccessRequestCache) getResourcesAndUpdateCurrent(ctx context.Context) e c.rw.Lock() defer c.rw.Unlock() c.primaryCache = cache + close(c.initC) return nil } @@ -404,6 +405,12 @@ func (c *AccessRequestCache) initializationChan() <-chan struct{} { return c.initC } +// InitializationChan is part of the resourceCollector interface and gets the channel +// used to signal that the accessRequestCache has been initialized. +func (c *AccessRequestCache) InitializationChan() <-chan struct{} { + return c.initializationChan() +} + // Close terminates the background process that keeps the access request cache up to // date, and terminates any inflight load operations. func (c *AccessRequestCache) Close() error { diff --git a/lib/services/access_request_cache_test.go b/lib/services/access_request_cache_test.go index 92c45c4bec4b0..905e2882f97e5 100644 --- a/lib/services/access_request_cache_test.go +++ b/lib/services/access_request_cache_test.go @@ -51,6 +51,12 @@ func newAccessRequestPack(t *testing.T) (accessRequestServices, *services.Access }) require.NoError(t, err) + select { + case <-cache.InitializationChan(): + case <-time.After(time.Second * 30): + require.FailNow(t, "timeout waiting for access request cache to initialize") + } + return svcs, cache }