diff --git a/clients/config_client/config_client.go b/clients/config_client/config_client.go index 42531947..c5181ca8 100644 --- a/clients/config_client/config_client.go +++ b/clients/config_client/config_client.go @@ -228,6 +228,7 @@ func (client *ConfigClient) getConfigInner(param *vo.ConfigParam) (content strin content = cache.GetFailover(cacheKey, client.configCacheDir) if len(content) > 0 { logger.Warnf("%s %s %s is using failover content!", clientConfig.NamespaceId, param.Group, param.DataId) + param.Content = content return content, nil } response, err := client.configProxy.queryConfig(param.DataId, param.Group, clientConfig.NamespaceId, @@ -247,6 +248,7 @@ func (client *ConfigClient) getConfigInner(param *vo.ConfigParam) (content strin } logger.Warnf("read config from cache success, dataId=%s, group=%s, namespaceId=%s", param.DataId, param.Group, clientConfig.NamespaceId) + param.Content = cacheContent return cacheContent, nil } if response != nil && response.Response != nil && !response.IsSuccess() { diff --git a/clients/config_client/config_client_test.go b/clients/config_client/config_client_test.go index 04a66fca..1f43cfbb 100644 --- a/clients/config_client/config_client_test.go +++ b/clients/config_client/config_client_test.go @@ -19,6 +19,7 @@ package config_client import ( "context" "errors" + "os" "testing" "github.com/nacos-group/nacos-sdk-go/v2/util" @@ -56,6 +57,7 @@ func createConfigClientTest() *ConfigClient { _ = nc.SetHttpAgent(&http_agent.HttpAgent{}) client, _ := NewConfigClient(&nc) client.configProxy = &MockConfigProxy{} + return client } @@ -100,6 +102,42 @@ func Test_GetConfig(t *testing.T) { assert.Equal(t, "hello world", content) } +func Test_GetConfigWithCache(t *testing.T) { + client := createConfigClientTest() + success, err := client.PublishConfig(vo.ConfigParam{ + DataId: localConfigTest.DataId, + Group: localConfigTest.Group, + Content: "hello world"}) + + assert.Nil(t, err) + assert.True(t, success) + + dir, err := os.MkdirTemp(os.TempDir(), "nacos") + assert.Nil(t, err) + + err = os.Mkdir(dir+"/config", 0700) + assert.Nil(t, err) + + client.configCacheDir = dir + cacheKey := util.GetConfigCacheKey(localConfigTest.DataId, "group", "") + f, err := os.Create(dir + "/" + cacheKey) + assert.Nil(t, err) + _, err = f.WriteString("hello world") + assert.Nil(t, err) + _ = f.Close() + defer func() { + err := os.RemoveAll(dir) + assert.Nil(t, err) + }() + for i := 0; i < 10; i++ { + content, err := client.GetConfig(vo.ConfigParam{ + DataId: localConfigTest.DataId, + Group: "group"}) + assert.Nil(t, err) + assert.Equal(t, "hello world", content) + } +} + func Test_SearchConfig(t *testing.T) { client := createConfigClientTest() _, _ = client.PublishConfig(vo.ConfigParam{