Fix#2543, nacos App Metadata not compatible with java (#2563) (#2615)
diff --git a/metadata/report/nacos/report.go b/metadata/report/nacos/report.go
index fd8182c..f889ad1 100644
--- a/metadata/report/nacos/report.go
+++ b/metadata/report/nacos/report.go
@@ -69,14 +69,24 @@
// GetAppMetadata get metadata info from nacos
func (n *nacosMetadataReport) GetAppMetadata(metadataIdentifier *identifier.SubscriberMetadataIdentifier) (*common.MetadataInfo, error) {
+ // compatible with java impl first
data, err := n.getConfig(vo.ConfigParam{
- DataId: metadataIdentifier.GetIdentifierKey(),
- Group: n.group,
+ DataId: metadataIdentifier.Application,
+ Group: metadataIdentifier.Revision,
})
if err != nil {
return nil, err
}
-
+ if data == "" {
+ // compatible with dubbo-go 3.1.x before
+ data, err = n.getConfig(vo.ConfigParam{
+ DataId: metadataIdentifier.GetIdentifierKey(),
+ Group: n.group,
+ })
+ if err != nil {
+ return nil, err
+ }
+ }
var metadataInfo common.MetadataInfo
err = json.Unmarshal([]byte(data), &metadataInfo)
if err != nil {
@@ -91,7 +101,16 @@
if err != nil {
return err
}
-
+ // compatible with java impl
+ err = n.storeMetadata(vo.ConfigParam{
+ DataId: metadataIdentifier.Application,
+ Group: metadataIdentifier.Revision,
+ Content: string(data),
+ })
+ if err != nil {
+ return err
+ }
+ // compatible with dubbo-go 3.1.x before
return n.storeMetadata(vo.ConfigParam{
DataId: metadataIdentifier.GetIdentifierKey(),
Group: n.group,
diff --git a/metadata/report/nacos/report_test.go b/metadata/report/nacos/report_test.go
index 759a456..3d87eaa 100644
--- a/metadata/report/nacos/report_test.go
+++ b/metadata/report/nacos/report_test.go
@@ -212,7 +212,7 @@
ctrl := gomock.NewController(t)
mnc := NewMockIConfigClient(ctrl)
- mnc.EXPECT().GetConfig(gomock.Any()).Return(string(data), nil)
+ mnc.EXPECT().GetConfig(gomock.Any()).MaxTimes(2).Return(string(data), nil)
nc := &nacosClient.NacosConfigClient{}
nc.SetClient(mnc)
@@ -253,7 +253,7 @@
func Test_nacosMetadataReport_PublishAppMetadata(t *testing.T) {
ctrl := gomock.NewController(t)
mnc := NewMockIConfigClient(ctrl)
- mnc.EXPECT().PublishConfig(gomock.Any()).Return(true, nil)
+ mnc.EXPECT().PublishConfig(gomock.Any()).Times(2).Return(true, nil)
nc := &nacosClient.NacosConfigClient{}
nc.SetClient(mnc)