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

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


The following commit(s) were added to refs/heads/master by this push:
     new c459caa  #1183 Bug: can not retire the services which have 
dependencies (#1186)
c459caa is described below

commit c459caae1dd1c95030bfb500bd32d8825e382873
Author: little-cui <[email protected]>
AuthorDate: Fri Dec 24 14:25:12 2021 +0800

    #1183 Bug: can not retire the services which have dependencies (#1186)
---
 datasource/etcd/retire.go      |  2 +-
 datasource/etcd/retire_test.go | 30 ++++++++++++++++++++++++------
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/datasource/etcd/retire.go b/datasource/etcd/retire.go
index eda5b35..3087be6 100644
--- a/datasource/etcd/retire.go
+++ b/datasource/etcd/retire.go
@@ -149,7 +149,7 @@ func UnregisterManyService(ctx context.Context, 
serviceIDKeys []*RotateServiceID
                serviceID := key.ServiceID
                pool.Do(func(ctx context.Context) {
                        resp, err := 
datasource.GetMetadataManager().UnregisterService(util.SetDomainProjectString(ctx,
 domainProject),
-                               &pb.DeleteServiceRequest{ServiceId: serviceID})
+                               &pb.DeleteServiceRequest{ServiceId: serviceID, 
Force: true})
                        if err == nil && resp.Response.IsSucceed() {
                                atomic.AddInt64(&deleted, 1)
                        }
diff --git a/datasource/etcd/retire_test.go b/datasource/etcd/retire_test.go
index 1dc4ada..f84d710 100644
--- a/datasource/etcd/retire_test.go
+++ b/datasource/etcd/retire_test.go
@@ -167,8 +167,7 @@ func TestUnregisterManyService(t *testing.T) {
                assert.Equal(t, int64(0), i)
        })
 
-       t.Run("delete inused should failed", func(t *testing.T) {
-               var serviceIDs []*etcd.RotateServiceIDKey
+       t.Run("delete inused without instance, should ok", func(t *testing.T) {
                service, err := 
datasource.GetMetadataManager().RegisterService(ctx, &pb.CreateServiceRequest{
                        Service: &pb.MicroService{
                                ServiceId:   serviceIDPrefix + "1",
@@ -176,10 +175,29 @@ func TestUnregisterManyService(t *testing.T) {
                        },
                })
                assert.NoError(t, err)
-               serviceIDs = append(serviceIDs, 
&etcd.RotateServiceIDKey{DomainProject: domainProject, ServiceID: 
service.ServiceId})
-
                defer datasource.GetMetadataManager().UnregisterService(ctx, 
&pb.DeleteServiceRequest{ServiceId: service.ServiceId, Force: true})
 
+               consumer, err := 
datasource.GetMetadataManager().RegisterService(ctx, &pb.CreateServiceRequest{
+                       Service: &pb.MicroService{
+                               ServiceId:   serviceIDPrefix + "2",
+                               ServiceName: serviceIDPrefix + "2",
+                       },
+               })
+               assert.NoError(t, err)
+               defer datasource.GetMetadataManager().UnregisterService(ctx, 
&pb.DeleteServiceRequest{ServiceId: consumer.ServiceId, Force: true})
+
+               _, err = datasource.GetMetadataManager().FindInstances(ctx, 
&pb.FindInstancesRequest{
+                       ConsumerServiceId: consumer.ServiceId,
+                       AppId:             "default",
+                       ServiceName:       serviceIDPrefix + "1",
+               })
+               assert.NoError(t, err)
+
+               var serviceIDs []*etcd.RotateServiceIDKey
+               serviceIDs = append(serviceIDs,
+                       &etcd.RotateServiceIDKey{DomainProject: domainProject, 
ServiceID: service.ServiceId},
+                       &etcd.RotateServiceIDKey{DomainProject: domainProject, 
ServiceID: consumer.ServiceId},
+               )
                _, err = datasource.GetMetadataManager().RegisterInstance(ctx, 
&pb.RegisterInstanceRequest{
                        Instance: &pb.MicroServiceInstance{
                                ServiceId: service.ServiceId,
@@ -189,10 +207,10 @@ func TestUnregisterManyService(t *testing.T) {
                assert.NoError(t, err)
 
                deleted := etcd.UnregisterManyService(ctx, serviceIDs)
-               assert.Equal(t, int64(0), deleted)
+               assert.Equal(t, int64(2), deleted)
 
                _, i, err := etcdadpt.List(ctx, 
path.GenerateServiceKey(domainProject, serviceIDPrefix))
                assert.NoError(t, err)
-               assert.Equal(t, int64(1), i)
+               assert.Equal(t, int64(0), i)
        })
 }

Reply via email to