deleteRecursive 在删除根目录“/”时会遇到问题
ZkClient类中调用deleteRecursive函数删除根目录会出现问题: like this: ZkClient zkClient = new ZkClient("localhost:2181"); zkClient.deleteRecursive("/");//will error
修改代码如下也许会解决问题: public boolean deleteRecursive(String path) { if (path.equals("/zookeeper/quota") || path.equals("/zookeeper") || path.equals("/")) { return true; } List<String> children; try { children = getChildren(path, false); } catch (ZkNoNodeException e) { return true; } String finalPath = path; for (String subPath : children) { if (!path.equals("/")) { finalPath = path + "/" + subPath; } else { finalPath = path + subPath; } if (!deleteRecursive(finalPath)) { return false; } } return delete(path); }
既然如此危险,还是建议不要在根目录/下操作好了。
现代Unix/Linux已经不允许在rm -fr / 了。
毕竟是问题,还请owner修正!