in clients/zk_client/zk_client.go [80:107]
func (zc *ShenYuZkClient) DeregisterServiceInstance(metaData interface{}) (deRegisterResult bool, err error) {
mdr, ok := metaData.(*model.MetaDataRegister)
if !ok {
logger.Fatalf("get zk client metaData error %v:", err)
}
if err := zc.ensureName(mdr.AppName); err != nil {
return false, err
}
path := zc.Zcp.ZkRoot + "/" + mdr.AppName
childs, stat, err := zc.ZkClient.Children(path)
if err != nil {
return false, err
}
if len(childs) == 0 {
err := zc.ZkClient.Delete(path, stat.Version)
if err != nil {
return false, err
}
}
for _, child := range childs {
fullPath := path + "/" + child
err := zc.ZkClient.Delete(fullPath, stat.Version)
if err != nil {
return false, err
}
}
return true, nil
}