diff --git a/cns/restserver/homeazmonitor.go b/cns/restserver/homeazmonitor.go index f73c6e35af..f54d3f1984 100644 --- a/cns/restserver/homeazmonitor.go +++ b/cns/restserver/homeazmonitor.go @@ -10,7 +10,6 @@ import ( "github.com/Azure/azure-container-networking/cns/logger" "github.com/Azure/azure-container-networking/cns/types" "github.com/Azure/azure-container-networking/nmagent" - "github.com/patrickmn/go-cache" "github.com/pkg/errors" ) @@ -50,14 +49,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