Alanxtl commented on code in PR #3395:
URL: https://github.com/apache/dubbo-go/pull/3395#discussion_r3388686342
##########
metadata/client.go:
##########
@@ -70,23 +77,27 @@ func GetMetadataFromRpc(revision string, instance
registry.ServiceInstance) (*in
return remoteService.getMetadataInfo(context.Background(), revision)
}
+// remoteMetadataService is the internal interface for fetching MetadataInfo
via RPC.
+// The context parameter is accepted for future cancellation support but is
not yet propagated.
type remoteMetadataService interface {
- getMetadataInfo(context context.Context, revision string)
(*info.MetadataInfo, error)
+ getMetadataInfo(_ context.Context, revision string)
(*info.MetadataInfo, error)
}
type triMetadataServiceV2 struct {
invoker base.Invoker
}
-func (m *triMetadataServiceV2) getMetadataInfo(ctx context.Context, revision
string) (*info.MetadataInfo, error) {
+// getMetadataInfo fetches metadata via RPC using the Triple v2 protocol.
+// TODO(context-propagation): ctx is not yet forwarded to the invoker;
cancellation is not respected.
+func (m *triMetadataServiceV2) getMetadataInfo(_ context.Context, revision
string) (*info.MetadataInfo, error) {
const methodName = "GetMetadataInfo"
req := &tripleapi.MetadataRequest{Revision: revision}
metadataInfo := &tripleapi.MetadataInfoV2{}
inv, _ := generateInvocation(m.invoker.GetURL(), methodName, req,
metadataInfo, constant.CallUnary)
res := m.invoker.Invoke(context.Background(), inv)
if res.Error() != nil {
- logger.Errorf("[Metadata] could not get the metadata info from
remote provider, err=%v", res.Error())
- return nil, res.Error()
+ logger.Errorf("[Metadata-RPC] could not get the metadata info
from remote provider, err=%v", res.Error())
Review Comment:
```suggestion
logger.Errorf("[Metadata][RPC] could not get the metadata info
from remote provider, err=%v", res.Error())
```
logger改成这种格式
##########
metadata/client.go:
##########
@@ -45,18 +45,25 @@ const defaultTimeout = "5s" // s
func GetMetadataFromMetadataReport(revision string, instance
registry.ServiceInstance, registryId string) (*info.MetadataInfo, error) {
report := GetMetadataReportByRegistry(registryId)
if report == nil {
- return nil, perrors.Errorf("no metadata report instance found
for registryId=%s, please check metadata-report configuration", registryId)
+ return nil, perrors.Errorf("[Metadata-Report] no metadata
report instance found for registryId=%s, please check metadata-report
configuration", registryId)
}
- return report.GetAppMetadata(instance.GetServiceName(), revision)
+ meta, err := report.GetAppMetadata(instance.GetServiceName(), revision)
+ if err != nil {
+ return nil, perrors.Wrapf(err, "[Metadata-Report] failed to get
app metadata app=%s revision=%s", instance.GetServiceName(), revision)
+ }
+ return meta, nil
}
func GetMetadataFromRpc(revision string, instance registry.ServiceInstance)
(*info.MetadataInfo, error) {
url := buildStandardMetadataServiceURL(instance)
+ if url == nil {
+ return nil, perrors.New("[Metadata-URL] metadata service URL
params missing: protocol is empty")
+ }
url.SetParam(constant.TimeoutKey, defaultTimeout)
p := extension.GetProtocol(url.Protocol)
invoker := p.Refer(url)
if invoker == nil { // can't connect instance
- return nil, perrors.New("can not connect to remote metadata
service host: " + url.Ip)
+ return nil, perrors.New("[Metadata-RPC] can not connect to
remote metadata service host: " + url.Ip)
Review Comment:
perrors 都不用加前缀
只有logger需要加前缀
##########
registry/servicediscovery/service_instances_changed_listener_impl.go:
##########
@@ -258,20 +263,61 @@ func GetMetadataInfo(app string, instance
registry.ServiceInstance, revision str
var metadataInfo *info.MetadataInfo
var err error
if instance.GetMetadata() == nil {
+ // No metadata map at all; treat as default (local/RPC) storage
type.
metadataStorageType = constant.DefaultMetadataStorageType
} else {
metadataStorageType =
instance.GetMetadata()[constant.MetadataStorageTypePropertyName]
+ if metadataStorageType == "" {
+ // MetadataStorageTypePropertyName absent (e.g. old
Java provider); default to local storage type.
+ logger.Warnf("[Metadata] MetadataStorageType not set
for instance %s, defaulting to local", instance.GetID())
+ metadataStorageType =
constant.DefaultMetadataStorageType
+ }
}
+
if metadataStorageType == constant.RemoteMetadataStorageType {
- metadataInfo, err =
metadata.GetMetadataFromMetadataReport(revision, instance, registryId)
- if err != nil {
- return nil, err
+ var reportErr error
+ metadataInfo, reportErr =
metadata.GetMetadataFromMetadataReport(revision, instance, registryId)
Review Comment:
```suggestion
metadataInfo, reportErr :=
metadata.GetMetadataFromMetadataReport(revision, instance, registryId)
```
##########
metadata/client.go:
##########
@@ -147,7 +158,9 @@ type remoteMetadataServiceV1 struct {
invoker base.Invoker
}
-func (m *remoteMetadataServiceV1) getMetadataInfo(ctx context.Context,
revision string) (*info.MetadataInfo, error) {
+// getMetadataInfo fetches metadata via RPC using the Dubbo v1 protocol.
Review Comment:
dubbo v1?
是dubbo2吗
这样写名字容易有歧义
--
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]