diff --git a/registry/directory/directory.go b/registry/directory/directory.go
index 2688253609f7f6438aae1595f134f18fdacfa2d1..42d03e40bef4f078d9fd8e746119523d3d0725b2 100644
--- a/registry/directory/directory.go
+++ b/registry/directory/directory.go
@@ -255,10 +255,11 @@ func (dir *registryDirectory) IsAvailable() bool {
func (dir *registryDirectory) Destroy() {
//TODO:unregister & unsubscribe
dir.BaseDirectory.Destroy(func() {
- for _, ivk := range dir.cacheInvokers {
+ invokers := dir.cacheInvokers
+ dir.cacheInvokers = []protocol.Invoker{}
+ for _, ivk := range invokers {
ivk.Destroy()
}
- dir.cacheInvokers = []protocol.Invoker{}
})
}