private void retry()

in dubbo-remoting-extensions/dubbo-remoting-etcd3/src/main/java/org/apache/dubbo/remoting/etcd/jetcd/JEtcdClientWrapper.java [687:730]


    private void retry() {
        if (!failedRegistered.isEmpty()) {
            Set<String> failed = new HashSet<String>(failedRegistered);
            if (!failed.isEmpty()) {

                if (cancelKeepAlive) {
                    return;
                }

                if (logger.isWarnEnabled()) {
                    logger.warn("Retry failed register(keep alive) for path '" + failed
                            + "', path size: " + failed.size());
                }
                try {
                    for (String path : failed) {
                        try {

                            /**
                             * Is it currently reconnecting ?
                             */
                            if (cancelKeepAlive) {
                                return;
                            }

                            createEphemeral(path);
                            failedRegistered.remove(path);
                        } catch (Throwable e) {

                            failedRegistered.add(path);

                            Status status = Status.fromThrowable(e);
                            if (status.getCode() == Status.Code.NOT_FOUND) {
                                cancelKeepAlive();
                            }

                            logger.warn("Failed to retry register(keep alive) for path '" + path + "', waiting for again, cause: " + e.getMessage(), e);
                        }
                    }
                } catch (Throwable t) {
                    logger.warn("Failed to retry register(keep alive) for path '" + failed + "', waiting for again, cause: " + t.getMessage(), t);
                }
            }
        }
    }