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)
})
}