Zookeeper删除父亲节点

Zookeeper作为分布式的协调者,应用越来越广泛。

Zookeeper在删除含有子节点的时候,会爆出 KeeperException.NotEmpty。

找了原始的Zookeeper API 和 Curator框架都是这么抛的异常。

所以不得不手动递归删除节点,代码如下:

private void doDelZnodeRecursively(String path) {
	try {
		List<String> childList = client.getChildren().forPath(path);
		if (CollectionUtils.isEmpty(childList)) {
			client.delete().forPath(path);
		} else {
			for(String childName: childList) {
				String childPath = path + Constants.STR_SLASH + childName;
				List<String> grandChildList = client.getChildren().forPath(childPath);
				if (CollectionUtils.isEmpty(grandChildList)) {
					client.delete().forPath(childPath);
				} else {
					doDelZnodeRecursively(childPath);
				}
			}
			client.delete().forPath(path);
		}
	} catch (Exception e) {
		throw new RuntimeException("Failed to delete node recursively", e);
	}
}


转载于:https://my.oschina.net/ivywjhua/blog/310178

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值