<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

## Ask your question here
[这个问题中](https://github.com/apache/dubbo/issues/12607)

在provider 恢复zk 链接后
日志如下
```
2023-06-27 19:24:53.473 [main-EventThread] INFO  org.apache.curator.framework.state.ConnectionStateManager [postState:251] - State change: RECONNECTED
```

FailbackRegistry 尝试去恢复链接 会调用  addFailedRegistered 加入到HashedWheelTimer  
HashedWheelTimer 最后尝试去重新注册的时候提示node 已经存在

```
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:119)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:783)
	at org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1176)
	at org.apache.curator.framework.imps.CreateBuilderImpl$17.call(CreateBuilderImpl.java:1156)
	at org.apache.curator.connection.StandardConnectionHandlingPolicy.callWithRetry(StandardConnectionHandlingPolicy.java:64)
	at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:100)
	at org.apache.curator.framework.imps.CreateBuilderImpl.pathInForeground(CreateBuilderImpl.java:1153)
	at org.apache.curator.framework.imps.CreateBuilderImpl.protectedPathInForeground(CreateBuilderImpl.java:607)
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:597)
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:575)
	at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:51)
	at org.apache.dubbo.remoting.zookeeper.curator.CuratorZookeeperClient.createEphemeral(CuratorZookeeperClient.java:138)
	at org.apache.dubbo.remoting.zookeeper.AbstractZookeeperClient.create(AbstractZookeeperClient.java:87)
	at org.apache.dubbo.registry.zookeeper.ZookeeperRegistry.doRegister(ZookeeperRegistry.java:161)
	at org.apache.dubbo.registry.retry.FailedRegisteredTask.doRetry(FailedRegisteredTask.java:37)
	at org.apache.dubbo.registry.retry.AbstractRetryTask.run(AbstractRetryTask.java:129)
	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:653)
	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:732)
	at org.apache.dubbo.common.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:454)
	at java.base/java.lang.Thread.run(Thread.java:833)
```

这个问题与 [瓜子遇到的问题类似](https://cn.dubbo.apache.org/zh-cn/blog/2019/01/05/dubbo-%e5%9c%a8%e7%93%9c%e5%ad%90%e4%ba%8c%e6%89%8b%e8%bd%a6%e7%9a%84%e5%ae%9e%e8%b7%b5/)
这块代码好像没有在3.0的代码中 而是用了faultTolerant 这个参数
查看了源码 AbstractZookeeperClient  的 create()只有在 ZookeeperRegistry 调用 doRegister 设置为false。
提交日志 显示#11036 这个issue后修改的doRegisterd的faultTolerant   从true 改为了 false

} else if (state == StateListener.NEW_SESSION_CREATED) {
                logger.warn(REGISTRY_ZOOKEEPER_EXCEPTION, "", "", "Trying to re-register urls and re-subscribe listeners of this instance to registry...");
                try {
                    ZookeeperRegistry.this.recover();
                } catch (Exception e) {
                    logger.error(REGISTRY_ZOOKEEPER_EXCEPTION, "", "", e.getMessage(), e);
                }
            } else if (state == StateListener.SESSION_LOST) {
                logger.warn(REGISTRY_ZOOKEEPER_EXCEPTION, "", "", "Url of this instance will be deleted from registry soon. " +
                    "Dubbo client will try to re-register once a new session is created.");
            } else if (state == StateListener.SUSPENDED) {
            } else if (state == StateListener.CONNECTED) {
            }
        });
    }
    @Override
    public boolean isAvailable() {
        return zkClient != null && zkClient.isConnected();
    }
    @Override
    public void destroy() {
        super.destroy();
        
        Set<URL> urls = zkListeners.keySet();
        for (URL url : urls) {
            ConcurrentMap<NotifyListener, ChildListener> map = zkListeners.get(url);
            if (CollectionUtils.isEmptyMap(map)) {
                continue;
            }
            Collection<ChildListener> childListeners = map.values();