Modo-me commented on code in PR #3605:
URL: https://github.com/apache/dubbo-go/pull/3605#discussion_r3781509546
##########
metadata/mapping/metadata/service_name_mapping.go:
##########
@@ -117,27 +136,52 @@ func backoff(attempt int) time.Duration {
}
// Get will return the application-level services. If not found, the empty set
will be returned.
-func (d *ServiceNameMapping) Get(url *common.URL, listener
mapping.MappingListener) (*gxset.HashSet, error) {
+func (d *ServiceNameMapping) Get(url *common.URL, listener
mapping.MappingListener) (result *gxset.HashSet, err error) {
serviceInterface := url.GetParam(constant.InterfaceKey, "")
+
+ operation := "get"
+ eventName := metadataMetrics.MetadataMappingGet
+ if listener != nil {
+ operation = "listen"
+ eventName = metadataMetrics.MetadataMappingListen
+ }
+
+ event := metadataMetrics.NewMetadataMetricTimeEvent(eventName)
+ event.Attachment[constant.InterfaceKey] = serviceInterface
+ event.Attachment[constant.GroupKey] = DefaultGroup
+ var errs []error
+ defer func() {
+ event.Succ = err == nil
+ event.Partial = err == nil && len(errs) > 0
+ event.End = time.Now()
+ metrics.Publish(event)
+ }()
+
metadataReports := metadata.GetMetadataReports()
if len(metadataReports) == 0 {
- return nil, perrors.New("can not get mapping in remote cause no
metadata report instance found")
+ err = perrors.New("can not get mapping in remote cause no
metadata report instance found")
+ logger.Warnf("[Metadata][Mapping] get failed interface=%s
group=%s reports=0 err=%v", serviceInterface, DefaultGroup, err)
+ return nil, err
}
+
// Attach the listener to the stable primary report only
(GetMetadataReport uses
// a deterministic selection: prefer "default", otherwise lexicographic
first).
// GetMetadataReports() iterates a map so its order is
non-deterministic; using
// i==0 as the anchor would bind the listener to a random backend each
run.
primaryReport := metadata.GetMetadataReport()
- var result *gxset.HashSet
- var errs []error
- for _, metadataReport := range metadataReports {
+ for i, metadataReport := range metadataReports {
var reportListener mapping.MappingListener
if metadataReport == primaryReport {
reportListener = listener
}
- set, err :=
metadataReport.GetServiceAppMapping(serviceInterface, DefaultGroup,
reportListener)
- if err != nil {
- errs = append(errs, err)
+ set, getErr :=
metadataReport.GetServiceAppMapping(serviceInterface, DefaultGroup,
reportListener)
+ if getErr != nil {
+ errs = append(errs, getErr)
+ reportURL := ""
+ if u := metadataReport.URL(); u != nil {
+ reportURL = u.String()
Review Comment:
已移除log敏感信息并添加测试
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]