func()

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
}