From 63f91d1c69afe5b1c0cbc452263dea7175a4c210 Mon Sep 17 00:00:00 2001 From: wangweicugw <38103831+wangweicugw@users.noreply.github.com> Date: Thu, 25 Jan 2024 08:58:52 +0800 Subject: [PATCH] fix: Repeated startTickerReloadCell idling unnecessarily. (#148) --- .../java/com/jd/jdbc/discovery/TopologyWatcherManager.java | 4 ++-- src/main/java/com/jd/jdbc/vitess/VitessDriver.java | 4 ++-- src/test/java/com/jd/jdbc/discovery/HealthCheckTest.java | 3 ++- .../java/com/jd/jdbc/vitess/VitessJdbcUrlParserTest.java | 5 +++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/jd/jdbc/discovery/TopologyWatcherManager.java b/src/main/java/com/jd/jdbc/discovery/TopologyWatcherManager.java index e2d4df7..6501578 100644 --- a/src/main/java/com/jd/jdbc/discovery/TopologyWatcherManager.java +++ b/src/main/java/com/jd/jdbc/discovery/TopologyWatcherManager.java @@ -60,14 +60,14 @@ public enum TopologyWatcherManager { scheduledExecutor.setRemoveOnCancelPolicy(true); } - public void startWatch(IContext ctx, TopoServer topoServer, String cell, String tabletKeyspace) { + public void startWatch(IContext ctx, TopoServer topoServer, String cell, String tabletKeyspace, TimeUnit timeUnit) { lock.lock(); try { String serverAddress = topoServer.getServerAddress(); if (!globalKeyspacesMap.containsKey(serverAddress)) { globalKeyspacesMap.put(serverAddress, new HashSet<>()); - startTickerReloadCell(ctx, topoServer, TimeUnit.MINUTES); + startTickerReloadCell(ctx, topoServer, timeUnit); } globalKeyspacesMap.get(serverAddress).add(tabletKeyspace); diff --git a/src/main/java/com/jd/jdbc/vitess/VitessDriver.java b/src/main/java/com/jd/jdbc/vitess/VitessDriver.java index c12df75..a587a8f 100755 --- a/src/main/java/com/jd/jdbc/vitess/VitessDriver.java +++ b/src/main/java/com/jd/jdbc/vitess/VitessDriver.java @@ -55,6 +55,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Properties; +import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; import java.util.logging.Logger; @@ -100,13 +101,12 @@ public Connection initConnect(String url, Properties info, boolean initOnly) thr prop.put(Constant.DRIVER_PROPERTY_ROLE_KEY, role); } TopoServer topoServer = Topo.getTopoServer(Topo.TopoServerImplementType.TOPO_IMPLEMENTATION_ETCD2, "http://" + prop.getProperty("host") + ":" + prop.getProperty("port")); - ResilientServer resilientServer = SrvTopo.newResilientServer(topoServer, "ResilientSrvTopoServer"); List cells = topoServer.getAllCells(globalContext); for (String cell : cells) { - TopologyWatcherManager.INSTANCE.startWatch(globalContext, topoServer, cell, tabletKeyspace); + TopologyWatcherManager.INSTANCE.startWatch(globalContext, topoServer, cell, tabletKeyspace, TimeUnit.MINUTES); } TabletGateway tabletGateway = TabletGateway.build(resilientServer); diff --git a/src/test/java/com/jd/jdbc/discovery/HealthCheckTest.java b/src/test/java/com/jd/jdbc/discovery/HealthCheckTest.java index 0bb71ec..e7cd644 100644 --- a/src/test/java/com/jd/jdbc/discovery/HealthCheckTest.java +++ b/src/test/java/com/jd/jdbc/discovery/HealthCheckTest.java @@ -44,6 +44,7 @@ import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import lombok.AllArgsConstructor; import lombok.ToString; @@ -1144,7 +1145,7 @@ private List mockGetHealthyTabletStats(Map