Skip to content

Commit

Permalink
fix: Repeated startTickerReloadCell idling unnecessarily. (#148)
Browse files Browse the repository at this point in the history
  • Loading branch information
wangweicugw authored Jan 25, 2024
1 parent 3e1572d commit 63f91d1
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/jd/jdbc/vitess/VitessDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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<String> 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);
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/com/jd/jdbc/discovery/HealthCheckTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -1144,7 +1145,7 @@ private List<TabletHealthCheck> mockGetHealthyTabletStats(Map<String, List<Table

private void startWatchTopo(String keyspaceName, TopoServer topoServer, String... cells) {
for (String cell : cells) {
TopologyWatcherManager.INSTANCE.startWatch(globalContext, topoServer, cell, keyspaceName);
TopologyWatcherManager.INSTANCE.startWatch(globalContext, topoServer, cell, keyspaceName, TimeUnit.SECONDS);
}
}

Expand Down
5 changes: 3 additions & 2 deletions src/test/java/com/jd/jdbc/vitess/VitessJdbcUrlParserTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import com.jd.jdbc.discovery.TopologyWatcherManager;
import com.jd.jdbc.sqlparser.utils.StringUtils;
import static com.jd.jdbc.vitess.VitessJdbcUrlParser.JDBC_VITESS_PREFIX;
import java.net.URI;
import java.net.URISyntaxException;
import java.sql.DriverManager;
Expand All @@ -29,9 +28,11 @@
import org.junit.Test;
import org.junit.rules.ExpectedException;
import testsuite.TestSuite;
import static testsuite.internal.TestSuiteShardSpec.TWO_SHARDS;
import testsuite.internal.environment.TestSuiteEnv;

import static com.jd.jdbc.vitess.VitessJdbcUrlParser.JDBC_VITESS_PREFIX;
import static testsuite.internal.TestSuiteShardSpec.TWO_SHARDS;

public class VitessJdbcUrlParserTest extends TestSuite {
private TestSuiteEnv env = Driver.of(TWO_SHARDS);

Expand Down

0 comments on commit 63f91d1

Please sign in to comment.