You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by as...@apache.org on 2017/12/28 08:22:28 UTC

[incubator-servicecomb-service-center] branch master updated: SCB-127 Bug fix: Can not discovery the same domain service instances. (#234)

This is an automated email from the ASF dual-hosted git repository.

asifdxtreme pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-service-center.git


The following commit(s) were added to refs/heads/master by this push:
     new a9637a4  SCB-127 Bug fix: Can not discovery the same domain service instances. (#234)
a9637a4 is described below

commit a9637a4c5c8b3b976eba26e70aa351e3795638a6
Author: little-cui <su...@qq.com>
AuthorDate: Thu Dec 28 16:22:27 2017 +0800

    SCB-127 Bug fix: Can not discovery the same domain service instances. (#234)
    
    * SCB-127 Bug fix: Can not discovery the same domain service instances.
    
    * SCB-127 Bug fix: Can not discovery the same domain service instances.
---
 pkg/util/util.go                           | 18 +++++++-----------
 server/service/event/rule_event_handler.go |  6 +++---
 server/service/instances.go                | 13 +++++++------
 3 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/pkg/util/util.go b/pkg/util/util.go
index eea2da3..fc950a4 100644
--- a/pkg/util/util.go
+++ b/pkg/util/util.go
@@ -150,11 +150,7 @@ func ParseDomainProject(ctx context.Context) string {
 }
 
 func ParseTargetDomainProject(ctx context.Context) string {
-	domain := ParseTargetDomain(ctx)
-	if len(domain) == 0 {
-		return ParseDomainProject(ctx)
-	}
-	return domain + "/" + ParseTargetProject(ctx)
+	return ParseTargetDomain(ctx) + "/" + ParseTargetProject(ctx)
 }
 
 func ParseDomain(ctx context.Context) string {
@@ -166,9 +162,9 @@ func ParseDomain(ctx context.Context) string {
 }
 
 func ParseTargetDomain(ctx context.Context) string {
-	v, ok := FromContext(ctx, "target-domain").(string)
-	if !ok {
-		return ""
+	v, _ := FromContext(ctx, "target-domain").(string)
+	if len(v) == 0 {
+		return ParseDomain(ctx)
 	}
 	return v
 }
@@ -182,9 +178,9 @@ func ParseProject(ctx context.Context) string {
 }
 
 func ParseTargetProject(ctx context.Context) string {
-	v, ok := FromContext(ctx, "target-project").(string)
-	if !ok {
-		return ""
+	v, _ := FromContext(ctx, "target-project").(string)
+	if len(v) == 0 {
+		return ParseProject(ctx)
 	}
 	return v
 }
diff --git a/server/service/event/rule_event_handler.go b/server/service/event/rule_event_handler.go
index 42c956c..a2d2650 100644
--- a/server/service/event/rule_event_handler.go
+++ b/server/service/event/rule_event_handler.go
@@ -53,14 +53,14 @@ func (apt *RulesChangedAsyncTask) Err() error {
 func (apt *RulesChangedAsyncTask) publish(ctx context.Context, domainProject, providerId string, rev int64) error {
 	provider, err := serviceUtil.GetService(ctx, domainProject, providerId)
 	if err != nil {
-		util.Logger().Errorf(err, "get service %s file failed", providerId)
+		util.Logger().Errorf(err, "get provider %s service file failed", providerId)
 		return err
 	}
 	if provider == nil {
 		tmpProvider, found := serviceUtil.MsCache().Get(providerId)
 		if !found {
-			util.Logger().Errorf(nil, "service not exist, %s", providerId)
-			return fmt.Errorf("service not exist, %s", providerId)
+			util.Logger().Errorf(nil, "provider %s does not exist", providerId)
+			return fmt.Errorf("provider %s does not exist", providerId)
 		}
 		provider = tmpProvider.(*pb.MicroService)
 	}
diff --git a/server/service/instances.go b/server/service/instances.go
index e850bc4..8160f7e 100644
--- a/server/service/instances.go
+++ b/server/service/instances.go
@@ -563,9 +563,8 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 		}, nil
 	}
 
-	targetDomainProject := util.ParseTargetDomainProject(ctx)
 	provider := &pb.MicroServiceKey{
-		Tenant:      targetDomainProject,
+		Tenant:      util.ParseTargetDomainProject(ctx),
 		Environment: service.Environment,
 		AppId:       in.AppId,
 		ServiceName: in.ServiceName,
@@ -576,9 +575,11 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 		provider.Environment = apt.Service.Environment
 		findFlag += "(shared services in " + provider.Environment + " environment)"
 	} else {
+		// provider is not a shared micro-service,
 		// only allow shared micro-service instances found in different domains.
-		targetDomainProject = domainProject
-		provider.Tenant = domainProject
+		util.SetContext(ctx, "target-domain", util.ParseDomain(ctx))
+		util.SetContext(ctx, "target-project", util.ParseProject(ctx))
+		provider.Tenant = util.ParseTargetDomainProject(ctx)
 		findFlag += "(" + provider.Environment + " services of the same domain)"
 	}
 
@@ -616,7 +617,7 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 	}
 
 	//维护version的规则,servicename 可能是别名,所以重新获取
-	providerService, err := serviceUtil.GetService(ctx, targetDomainProject, ids[0])
+	providerService, err := serviceUtil.GetService(ctx, provider.Tenant, ids[0])
 	if providerService == nil {
 		util.Logger().Errorf(err, "find instance failed, %s: no provider matched.", findFlag)
 		return &pb.FindInstancesResponse{
@@ -624,7 +625,7 @@ func (s *InstanceService) Find(ctx context.Context, in *pb.FindInstancesRequest)
 		}, nil
 	}
 
-	provider = pb.MicroServiceToKey(targetDomainProject, providerService)
+	provider = pb.MicroServiceToKey(provider.Tenant, providerService)
 	provider.Version = in.VersionRule
 
 	err = serviceUtil.AddServiceVersionRule(ctx, domainProject, service, provider)

-- 
To stop receiving notification emails like this one, please contact
['"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>'].