diff --git a/metadata/report/consul/report.go b/metadata/report/consul/report.go index 690534220bac690569af014cc5401659bcb0f0ae..2d3d00d608ccd00d7b1bf8c3ca7d5d0d8edbbd91 100644 --- a/metadata/report/consul/report.go +++ b/metadata/report/consul/report.go @@ -34,9 +34,8 @@ var ( ) func init() { - mf := &consulMetadataReportFactory{} extension.SetMetadataReportFactory("consul", func() factory.MetadataReportFactory { - return mf + return &consulMetadataReportFactory{} }) } @@ -75,17 +74,17 @@ func (m *consulMetadataReport) RemoveServiceMetadata(metadataIdentifier *identif } // GetExportedURLs gets the urls. -func (m *consulMetadataReport) GetExportedURLs(metadataIdentifier *identifier.ServiceMetadataIdentifier) []string { +func (m *consulMetadataReport) GetExportedURLs(metadataIdentifier *identifier.ServiceMetadataIdentifier) ([]string, error) { k := metadataIdentifier.GetIdentifierKey() kv, _, err := m.client.KV().Get(k, nil) if err != nil { - panic(err) + return emptyStrSlice, err } if kv == nil { - return emptyStrSlice + return emptyStrSlice, nil } - return []string{string(kv.Value)} + return []string{string(kv.Value)}, nil } // SaveSubscribedData saves the urls. @@ -96,31 +95,31 @@ func (m *consulMetadataReport) SaveSubscribedData(subscriberMetadataIdentifier * } // GetSubscribedURLs gets the urls. -func (m *consulMetadataReport) GetSubscribedURLs(subscriberMetadataIdentifier *identifier.SubscriberMetadataIdentifier) []string { +func (m *consulMetadataReport) GetSubscribedURLs(subscriberMetadataIdentifier *identifier.SubscriberMetadataIdentifier) ([]string, error) { k := subscriberMetadataIdentifier.GetIdentifierKey() kv, _, err := m.client.KV().Get(k, nil) if err != nil { - panic(err) + return emptyStrSlice, err } if kv == nil { - return emptyStrSlice + return emptyStrSlice, nil } - return []string{string(kv.Value)} + return []string{string(kv.Value)}, nil } // GetServiceDefinition gets the service definition. -func (m *consulMetadataReport) GetServiceDefinition(metadataIdentifier *identifier.MetadataIdentifier) string { +func (m *consulMetadataReport) GetServiceDefinition(metadataIdentifier *identifier.MetadataIdentifier) (string, error) { k := metadataIdentifier.GetIdentifierKey() kv, _, err := m.client.KV().Get(k, nil) if err != nil { - panic(err) + return "", err } if kv == nil { - return "" + return "", nil } - return string(kv.Value) + return string(kv.Value), nil } type consulMetadataReportFactory struct { diff --git a/metadata/report/consul/report_test.go b/metadata/report/consul/report_test.go index 7996421f7219faeecf90b3e5279c9e848e0b02cf..b982d7176572fc4a0fcadcc252865c8dddd46169 100644 --- a/metadata/report/consul/report_test.go +++ b/metadata/report/consul/report_test.go @@ -115,8 +115,9 @@ func (suite *consulMetadataReportTestSuite) testRemoveServiceMetadata() { func (suite *consulMetadataReportTestSuite) testGetExportedURLs() { serviceMi := newServiceMetadataIdentifier("provider") - urls := suite.m.GetExportedURLs(serviceMi) + urls, err := suite.m.GetExportedURLs(serviceMi) assert.Equal(suite.t, 1, len(urls)) + assert.NoError(suite.t, err) } func (suite *consulMetadataReportTestSuite) testSaveSubscribedData(url common.URL) { @@ -129,14 +130,16 @@ func (suite *consulMetadataReportTestSuite) testSaveSubscribedData(url common.UR func (suite *consulMetadataReportTestSuite) testGetSubscribedURLs() { subscribeMi := newSubscribeMetadataIdentifier("provider") - urls := suite.m.GetSubscribedURLs(subscribeMi) + urls, err := suite.m.GetSubscribedURLs(subscribeMi) assert.Equal(suite.t, 1, len(urls)) + assert.NoError(suite.t, err) } func (suite *consulMetadataReportTestSuite) testGetServiceDefinition() { providerMi := newMetadataIdentifier("provider") - providerMeta := suite.m.GetServiceDefinition(providerMi) + providerMeta, err := suite.m.GetServiceDefinition(providerMi) assert.Equal(suite.t, "provider", providerMeta) + assert.NoError(suite.t, err) } func test1(t *testing.T) { diff --git a/metadata/report/delegate/delegate_report.go b/metadata/report/delegate/delegate_report.go index 08092a7ddcbd0363720f520407cf25e8ad33fff0..64103b259ac0107e5b30aa64a21d80e34850ed45 100644 --- a/metadata/report/delegate/delegate_report.go +++ b/metadata/report/delegate/delegate_report.go @@ -235,7 +235,7 @@ func (mr *MetadataReport) RemoveServiceMetadata(identifier *identifier.ServiceMe } // GetExportedURLs will delegate to call remote metadata's sdk to get exported urls -func (mr *MetadataReport) GetExportedURLs(identifier *identifier.ServiceMetadataIdentifier) []string { +func (mr *MetadataReport) GetExportedURLs(identifier *identifier.ServiceMetadataIdentifier) ([]string, error) { report := instance.GetMetadataReportInstance() return report.GetExportedURLs(identifier) } @@ -260,13 +260,13 @@ func (mr *MetadataReport) SaveSubscribedData(identifier *identifier.SubscriberMe } // GetSubscribedURLs will delegate to call remote metadata's sdk to get subscribed urls -func (MetadataReport) GetSubscribedURLs(identifier *identifier.SubscriberMetadataIdentifier) []string { +func (MetadataReport) GetSubscribedURLs(identifier *identifier.SubscriberMetadataIdentifier) ([]string, error) { report := instance.GetMetadataReportInstance() return report.GetSubscribedURLs(identifier) } // GetServiceDefinition will delegate to call remote metadata's sdk to get service definitions -func (MetadataReport) GetServiceDefinition(identifier *identifier.MetadataIdentifier) string { +func (MetadataReport) GetServiceDefinition(identifier *identifier.MetadataIdentifier) (string, error) { report := instance.GetMetadataReportInstance() return report.GetServiceDefinition(identifier) } diff --git a/metadata/report/nacos/report.go b/metadata/report/nacos/report.go index 7db4c85d9a0f038dfd9e89492e72303c867379b2..988ea128388d6d81d2c110696e589ee4acabd8dd 100644 --- a/metadata/report/nacos/report.go +++ b/metadata/report/nacos/report.go @@ -38,9 +38,8 @@ import ( ) func init() { - mf := &nacosMetadataReportFactory{} extension.SetMetadataReportFactory("nacos", func() factory.MetadataReportFactory { - return mf + return &nacosMetadataReportFactory{} }) } @@ -86,7 +85,7 @@ func (n *nacosMetadataReport) RemoveServiceMetadata(metadataIdentifier *identifi } // GetExportedURLs gets the urls. -func (n *nacosMetadataReport) GetExportedURLs(metadataIdentifier *identifier.ServiceMetadataIdentifier) []string { +func (n *nacosMetadataReport) GetExportedURLs(metadataIdentifier *identifier.ServiceMetadataIdentifier) ([]string, error) { return n.getConfigAsArray(vo.ConfigParam{ DataId: metadataIdentifier.GetIdentifierKey(), Group: metadataIdentifier.Group, @@ -103,7 +102,7 @@ func (n *nacosMetadataReport) SaveSubscribedData(subscriberMetadataIdentifier *i } // GetSubscribedURLs gets the urls. -func (n *nacosMetadataReport) GetSubscribedURLs(subscriberMetadataIdentifier *identifier.SubscriberMetadataIdentifier) []string { +func (n *nacosMetadataReport) GetSubscribedURLs(subscriberMetadataIdentifier *identifier.SubscriberMetadataIdentifier) ([]string, error) { return n.getConfigAsArray(vo.ConfigParam{ DataId: subscriberMetadataIdentifier.GetIdentifierKey(), Group: subscriberMetadataIdentifier.Group, @@ -111,7 +110,7 @@ func (n *nacosMetadataReport) GetSubscribedURLs(subscriberMetadataIdentifier *id } // GetServiceDefinition gets the service definition. -func (n *nacosMetadataReport) GetServiceDefinition(metadataIdentifier *identifier.MetadataIdentifier) string { +func (n *nacosMetadataReport) GetServiceDefinition(metadataIdentifier *identifier.MetadataIdentifier) (string, error) { return n.getConfig(vo.ConfigParam{ DataId: metadataIdentifier.GetIdentifierKey(), Group: metadataIdentifier.Group, @@ -145,28 +144,34 @@ func (n *nacosMetadataReport) deleteMetadata(param vo.ConfigParam) error { // getConfigAsArray will read the config and then convert it as an one-element array // error or config not found, an empty list will be returned. -func (n *nacosMetadataReport) getConfigAsArray(param vo.ConfigParam) []string { - cfg := n.getConfig(param) +func (n *nacosMetadataReport) getConfigAsArray(param vo.ConfigParam) ([]string, error) { res := make([]string, 0, 1) + + cfg, err := n.getConfig(param) + if err != nil { + return res, err + } if len(cfg) == 0 { - return res + return res, nil } + decodeCfg, err := url.QueryUnescape(cfg) if err != nil { logger.Errorf("The config is invalid: %s", cfg) - return res + return res, err } res = append(res, decodeCfg) - return res + return res, nil } // getConfig will read the config -func (n *nacosMetadataReport) getConfig(param vo.ConfigParam) string { +func (n *nacosMetadataReport) getConfig(param vo.ConfigParam) (string, error) { cfg, err := n.client.GetConfig(param) if err != nil { logger.Errorf("Finding the configuration failed: %v", param) + return "", err } - return cfg + return cfg, nil } type nacosMetadataReportFactory struct { diff --git a/metadata/report/nacos/report_test.go b/metadata/report/nacos/report_test.go index 971c7bfe8f4ad240701118bae75c4711c53b7893..be01eb22f7e95966c3bf816fdf648629b64380a3 100644 --- a/metadata/report/nacos/report_test.go +++ b/metadata/report/nacos/report_test.go @@ -54,8 +54,9 @@ func TestNacosMetadataReport_CRUD(t *testing.T) { err = rpt.SaveServiceMetadata(serviceMi, serviceUrl) assert.Nil(t, err) - exportedUrls := rpt.GetExportedURLs(serviceMi) + exportedUrls, err := rpt.GetExportedURLs(serviceMi) assert.Equal(t, 1, len(exportedUrls)) + assert.Nil(t, err) subMi := newSubscribeMetadataIdentifier() urls := []string{serviceUrl.String()} @@ -63,8 +64,9 @@ func TestNacosMetadataReport_CRUD(t *testing.T) { err = rpt.SaveSubscribedData(subMi, string(bytes)) assert.Nil(t, err) - subscribeUrl := rpt.GetSubscribedURLs(subMi) + subscribeUrl, err := rpt.GetSubscribedURLs(subMi) assert.Equal(t, 1, len(subscribeUrl)) + assert.Nil(t, err) err = rpt.RemoveServiceMetadata(serviceMi) assert.Nil(t, err) diff --git a/metadata/report/report.go b/metadata/report/report.go index d5930dc1fddc616ae1e2d9faa19bc1f9cbf7c6bf..3ef8f5925e6c81c493c8d2ca67e1c5efa3717f55 100644 --- a/metadata/report/report.go +++ b/metadata/report/report.go @@ -28,8 +28,8 @@ type MetadataReport interface { StoreConsumerMetadata(*identifier.MetadataIdentifier, string) error SaveServiceMetadata(*identifier.ServiceMetadataIdentifier, common.URL) error RemoveServiceMetadata(*identifier.ServiceMetadataIdentifier) error - GetExportedURLs(*identifier.ServiceMetadataIdentifier) []string + GetExportedURLs(*identifier.ServiceMetadataIdentifier) ([]string, error) SaveSubscribedData(*identifier.SubscriberMetadataIdentifier, string) error - GetSubscribedURLs(*identifier.SubscriberMetadataIdentifier) []string - GetServiceDefinition(*identifier.MetadataIdentifier) string + GetSubscribedURLs(*identifier.SubscriberMetadataIdentifier) ([]string, error) + GetServiceDefinition(*identifier.MetadataIdentifier) (string, error) } diff --git a/metadata/report/zookeeper/report.go b/metadata/report/zookeeper/report.go index 955393f79c9b50f35e2d6d34a30129c5554e2219..58c4791c2b558e6562368a93bc88c9b743699659 100644 --- a/metadata/report/zookeeper/report.go +++ b/metadata/report/zookeeper/report.go @@ -37,9 +37,8 @@ var ( ) func init() { - mf := &zookeeperMetadataReportFactory{} extension.SetMetadataReportFactory("zookeeper", func() factory.MetadataReportFactory { - return mf + return &zookeeperMetadataReportFactory{} }) } @@ -75,17 +74,17 @@ func (m *zookeeperMetadataReport) RemoveServiceMetadata(metadataIdentifier *iden } // GetExportedURLs gets the urls. -func (m *zookeeperMetadataReport) GetExportedURLs(metadataIdentifier *identifier.ServiceMetadataIdentifier) []string { +func (m *zookeeperMetadataReport) GetExportedURLs(metadataIdentifier *identifier.ServiceMetadataIdentifier) ([]string, error) { k := m.rootDir + metadataIdentifier.GetFilePathKey() v, _, err := m.client.GetContent(k) if err != nil { - panic(err) + return emptyStrSlice, err } if len(v) == 0 { - return emptyStrSlice + return emptyStrSlice, nil } - return []string{string(v)} + return []string{string(v)}, nil } // SaveSubscribedData saves the urls. @@ -95,27 +94,27 @@ func (m *zookeeperMetadataReport) SaveSubscribedData(subscriberMetadataIdentifie } // GetSubscribedURLs gets the urls. -func (m *zookeeperMetadataReport) GetSubscribedURLs(subscriberMetadataIdentifier *identifier.SubscriberMetadataIdentifier) []string { +func (m *zookeeperMetadataReport) GetSubscribedURLs(subscriberMetadataIdentifier *identifier.SubscriberMetadataIdentifier) ([]string, error) { k := m.rootDir + subscriberMetadataIdentifier.GetFilePathKey() v, _, err := m.client.GetContent(k) if err != nil { - panic(err) + return emptyStrSlice, err } if len(v) == 0 { - return emptyStrSlice + return emptyStrSlice, nil } - return []string{string(v)} + return []string{string(v)}, nil } // GetServiceDefinition gets the service definition. -func (m *zookeeperMetadataReport) GetServiceDefinition(metadataIdentifier *identifier.MetadataIdentifier) string { +func (m *zookeeperMetadataReport) GetServiceDefinition(metadataIdentifier *identifier.MetadataIdentifier) (string, error) { k := m.rootDir + metadataIdentifier.GetFilePathKey() v, _, err := m.client.GetContent(k) if err != nil { - panic(err) + return "", err } - return string(v) + return string(v), nil } type zookeeperMetadataReportFactory struct { diff --git a/metadata/report/zookeeper/report_test.go b/metadata/report/zookeeper/report_test.go index c83022bd34e9b8708e91680ce80b670af7c9c21f..5d25e3c496dec4d70f221d0f6d5b0dde08ca6304 100644 --- a/metadata/report/zookeeper/report_test.go +++ b/metadata/report/zookeeper/report_test.go @@ -115,8 +115,9 @@ func (suite *zookeeperMetadataReportTestSuite) testRemoveServiceMetadata() { func (suite *zookeeperMetadataReportTestSuite) testGetExportedURLs() { serviceMi := newServiceMetadataIdentifier("provider") - urls := suite.m.GetExportedURLs(serviceMi) + urls, err := suite.m.GetExportedURLs(serviceMi) assert.Equal(suite.t, 1, len(urls)) + assert.NoError(suite.t, err) } func (suite *zookeeperMetadataReportTestSuite) testSaveSubscribedData(url common.URL) { @@ -129,14 +130,16 @@ func (suite *zookeeperMetadataReportTestSuite) testSaveSubscribedData(url common func (suite *zookeeperMetadataReportTestSuite) testGetSubscribedURLs() { subscribeMi := newSubscribeMetadataIdentifier("provider") - urls := suite.m.GetSubscribedURLs(subscribeMi) + urls, err := suite.m.GetSubscribedURLs(subscribeMi) assert.Equal(suite.t, 1, len(urls)) + assert.NoError(suite.t, err) } func (suite *zookeeperMetadataReportTestSuite) testGetServiceDefinition() { providerMi := newMetadataIdentifier("provider") - providerMeta := suite.m.GetServiceDefinition(providerMi) + providerMeta, err := suite.m.GetServiceDefinition(providerMi) assert.Equal(suite.t, "provider", providerMeta) + assert.NoError(suite.t, err) } func test1(t *testing.T) {