From 7daddbbfa87be4158c2a01ca28e5c08edf67ed35 Mon Sep 17 00:00:00 2001 From: Saksham Mittal Date: Tue, 19 Aug 2025 09:29:05 -0700 Subject: [PATCH 1/2] populate home az cache if it's not filled --- cns/restserver/homeazmonitor.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/cns/restserver/homeazmonitor.go b/cns/restserver/homeazmonitor.go index f73c6e35af..4581e6ec2d 100644 --- a/cns/restserver/homeazmonitor.go +++ b/cns/restserver/homeazmonitor.go @@ -50,14 +50,25 @@ func (h *HomeAzMonitor) updateCacheValue(resp cns.GetHomeAzResponse) { // readCacheValue reads home az cache value func (h *HomeAzMonitor) readCacheValue() cns.GetHomeAzResponse { - cachedResp, found := h.values.Get(homeAzCacheKey) - if !found { - return cns.GetHomeAzResponse{Response: cns.Response{ + if cachedResp, found := h.values.Get(homeAzCacheKey); found { + return cachedResp.(cns.GetHomeAzResponse) + } + + ctx, cancel := context.WithTimeout(context.Background(), ContextTimeOut) + defer cancel() + h.Populate(ctx) + + if cachedResp, found := h.values.Get(homeAzCacheKey); found { + return cachedResp.(cns.GetHomeAzResponse) + } + + return cns.GetHomeAzResponse{ + Response: cns.Response{ ReturnCode: types.NotFound, Message: "HomeAz Cache is unavailable", - }, HomeAzResponse: cns.HomeAzResponse{IsSupported: false}} + }, + HomeAzResponse: cns.HomeAzResponse{IsSupported: false}, } - return cachedResp.(cns.GetHomeAzResponse) } // Start starts a new thread to refresh home az cache From 05a7f0df42a62a324185068ef205587e0d06dc83 Mon Sep 17 00:00:00 2001 From: Saksham Mittal Date: Tue, 19 Aug 2025 10:36:58 -0700 Subject: [PATCH 2/2] populate home az cache if it's not filled --- cns/restserver/homeazmonitor.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cns/restserver/homeazmonitor.go b/cns/restserver/homeazmonitor.go index 4581e6ec2d..bf80f14f54 100644 --- a/cns/restserver/homeazmonitor.go +++ b/cns/restserver/homeazmonitor.go @@ -54,6 +54,7 @@ func (h *HomeAzMonitor) readCacheValue() cns.GetHomeAzResponse { return cachedResp.(cns.GetHomeAzResponse) } + // Cache miss - populate cache and try again ctx, cancel := context.WithTimeout(context.Background(), ContextTimeOut) defer cancel() h.Populate(ctx) @@ -62,6 +63,7 @@ func (h *HomeAzMonitor) readCacheValue() cns.GetHomeAzResponse { return cachedResp.(cns.GetHomeAzResponse) } + // Still no cache value after populate attempt return cns.GetHomeAzResponse{ Response: cns.Response{ ReturnCode: types.NotFound,