From 455f69ad9e70bad8688f007411928059606c9f90 Mon Sep 17 00:00:00 2001 From: YuXiaoFeng <43255432@qq.com> Date: Tue, 5 Nov 2019 13:51:29 +0800 Subject: [PATCH] Enhance EtcdCoordinator if disconnected from etcd server for a long time (#3782) * Update EtcdCoordinator.java when EtcdCoordinator cannot connect to etcd cluster for a long time, the information registered in etcd will expire and refresh() function will not work. --- .../oap/server/cluster/plugin/etcd/EtcdCoordinator.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/EtcdCoordinator.java b/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/EtcdCoordinator.java index 307da9eec..35984d30b 100644 --- a/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/EtcdCoordinator.java +++ b/oap-server/server-cluster-plugin/cluster-etcd-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/etcd/EtcdCoordinator.java @@ -34,11 +34,14 @@ import org.apache.skywalking.oap.server.core.cluster.RemoteInstance; import org.apache.skywalking.oap.server.core.cluster.ServiceRegisterException; import org.apache.skywalking.oap.server.core.remote.client.Address; import org.apache.skywalking.oap.server.telemetry.api.TelemetryRelatedContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Alan Lau */ public class EtcdCoordinator implements ClusterRegister, ClusterNodesQuery { + private static final Logger logger = LoggerFactory.getLogger(EtcdCoordinator.class); private ClusterModuleEtcdConfig config; @@ -113,7 +116,11 @@ public class EtcdCoordinator implements ClusterRegister, ClusterNodesQuery { try { client.refresh(key, KEY_TTL).send().get(); } catch (Exception e) { - + try { + client.put(key, json).ttl(KEY_TTL).send().get(); + } catch (Exception ee) { + logger.error(ee.getMessage(), ee); + } } }, 5 * 1000, 30 * 1000, TimeUnit.MILLISECONDS); }