You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by GitBox <gi...@apache.org> on 2018/05/29 01:47:02 UTC
[GitHub] little-cui closed pull request #356: SCB-619 find instance ,when consumer's provider rule more exist,then …
little-cui closed pull request #356: SCB-619 find instance ,when consumer's provider rule more exist,then …
URL: https://github.com/apache/incubator-servicecomb-service-center/pull/356
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/server/service/util/dependency.go b/server/service/util/dependency.go
index 330473ae..3263841e 100644
--- a/server/service/util/dependency.go
+++ b/server/service/util/dependency.go
@@ -160,18 +160,29 @@ func GetProviderIdsByConsumer(ctx context.Context, domainProject string, service
return providerIds[:allowIdx], providerIds[denyIdx:], nil
}
-func ProviderDependencyRuleExist(ctx context.Context, provider *pb.MicroServiceKey, consumer *pb.MicroServiceKey) (bool, error) {
+func DependencyRuleExist(ctx context.Context, provider *pb.MicroServiceKey, consumer *pb.MicroServiceKey) (bool, error) {
targetDomainProject := provider.Tenant
if len(targetDomainProject) == 0 {
targetDomainProject = consumer.Tenant
}
+
+ consumerKey := apt.GenerateConsumerDependencyRuleKey(targetDomainProject, consumer)
+ existed, err := dependencyRuleExistUtil(ctx, consumerKey, provider)
+ if err != nil || existed {
+ return existed, err
+ }
+
providerKey := apt.GenerateProviderDependencyRuleKey(targetDomainProject, provider)
- consumers, err := TransferToMicroServiceDependency(ctx, providerKey)
+ return dependencyRuleExistUtil(ctx, providerKey, consumer)
+}
+
+func dependencyRuleExistUtil(ctx context.Context, key string, target *pb.MicroServiceKey) (bool, error) {
+ compareData, err := TransferToMicroServiceDependency(ctx, key)
if err != nil {
return false, err
}
- if len(consumers.Dependency) != 0 {
- isEqual, err := containServiceDependency(consumers.Dependency, consumer)
+ if len(compareData.Dependency) != 0 {
+ isEqual, err := containServiceDependency(compareData.Dependency, target)
if err != nil {
return false, err
}
@@ -186,7 +197,7 @@ func ProviderDependencyRuleExist(ctx context.Context, provider *pb.MicroServiceK
func AddServiceVersionRule(ctx context.Context, domainProject string, consumer *pb.MicroService, provider *pb.MicroServiceKey) error {
//创建依赖一致
consumerKey := pb.MicroServiceToKey(domainProject, consumer)
- exist, err := ProviderDependencyRuleExist(ctx, provider, consumerKey)
+ exist, err := DependencyRuleExist(ctx, provider, consumerKey)
if exist || err != nil {
return err
}
diff --git a/server/service/util/dependency_test.go b/server/service/util/dependency_test.go
index d28b0f1d..d328190f 100644
--- a/server/service/util/dependency_test.go
+++ b/server/service/util/dependency_test.go
@@ -218,6 +218,13 @@ func TestBadParamsResponse(t *testing.T) {
}
}
+func TestDependencyRuleExistUtil(t *testing.T) {
+ _, err := dependencyRuleExistUtil(context.Background(), "", &proto.MicroServiceKey{})
+ if err == nil {
+ t.Fatalf(`dependencyRuleExistUtil failed`)
+ }
+}
+
func TestParamsChecker(t *testing.T) {
p := ParamsChecker(nil, nil)
if p == nil || p.Response.Code == proto.Response_SUCCESS {
@@ -269,12 +276,12 @@ func TestParamsChecker(t *testing.T) {
}
func TestServiceDependencyRuleExist(t *testing.T) {
- _, err := ProviderDependencyRuleExist(util.SetContext(context.Background(), "cacheOnly", "1"), &proto.MicroServiceKey{}, &proto.MicroServiceKey{})
+ _, err := DependencyRuleExist(util.SetContext(context.Background(), "cacheOnly", "1"), &proto.MicroServiceKey{}, &proto.MicroServiceKey{})
if err != nil {
t.Fatalf(`ServiceDependencyRuleExist WithCacheOnly failed`)
}
- _, err = ProviderDependencyRuleExist(context.Background(), &proto.MicroServiceKey{}, &proto.MicroServiceKey{})
+ _, err = DependencyRuleExist(context.Background(), &proto.MicroServiceKey{}, &proto.MicroServiceKey{})
if err == nil {
t.Fatalf(`ServiceDependencyRuleExist failed`)
}
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services