Skip to content

Commit d3c3bc0

Browse files
committed
fix: keeper connect timeout if not leader && FetchSchemerFromOtherNode not work if zoopath exists
1 parent 07355fd commit d3c3bc0

File tree

6 files changed

+26
-2427
lines changed

6 files changed

+26
-2427
lines changed

192.168.110.48:7890

Lines changed: 0 additions & 2420 deletions
This file was deleted.

cmd/znodes/count.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func ZCntHandle(opts ZCntOpts) {
4444
zkPort, _ = strconv.Atoi(port)
4545
}
4646

47-
service, err := zookeeper.NewZkService(hosts, zkPort, 300)
47+
service, err := zookeeper.NewZkService(hosts, zkPort, 30)
4848
if err != nil {
4949
log.Logger.Fatalf("can't create zookeeper instance:%v", err)
5050
}

cmd/znodes/suball.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func SuballHandle(opts ZSuballOpts) {
3636
log.Logger.Fatalf("get cluster %s failed:%v", opts.ClusterName, err)
3737
}
3838
nodes, port := zookeeper.GetZkInfo(&cluster)
39-
service, err := zookeeper.NewZkService(nodes, port, 300)
39+
service, err := zookeeper.NewZkService(nodes, port, 10)
4040
if err != nil {
4141
log.Logger.Fatalf("can't create zookeeper instance:%v", err)
4242
}

controller/clickhouse.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1929,7 +1929,7 @@ func (controller *ClickHouseController) StartNode(c *gin.Context) {
19291929
}
19301930
conf.Watch(ip)
19311931
if host != "" {
1932-
ckService := clickhouse.NewCkService(&conf)
1932+
ckService := clickhouse.NewCkService(&con)
19331933
ckService.InitCkService()
19341934
err := ckService.FetchSchemerFromOtherNode(host)
19351935
if err != nil {

service/clickhouse/clickhouse_service.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -588,15 +588,17 @@ func (ck *CkService) FetchSchemerFromOtherNode(host string) error {
588588
}
589589

590590
num := len(names)
591+
var lastErr error
591592
for i := 0; i < num; i++ {
592593
log.Logger.Debugf("statement: %s", statements[i])
593594
if err := ck.Conn.Exec(statements[i]); err != nil {
594595
log.Logger.Warnf("execute [%s] failed: %v", statements[i], err)
596+
lastErr = err
595597
continue
596598
}
597599
}
598600

599-
return nil
601+
return lastErr
600602
}
601603

602604
func (ck *CkService) ShowCreateTable(tbname, database string) (string, error) {

service/zookeeper/zookeeper_service.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,27 @@ func NewZkService(nodes []string, port int, sessionTimeout int) (*ZkService, err
3737
SessionTimeout: sessionTimeout,
3838
}
3939

40-
servers := make([]string, len(nodes))
41-
for index, node := range nodes {
42-
servers[index] = net.JoinHostPort(node, fmt.Sprint(port))
40+
var leader string
41+
for _, node := range nodes {
42+
tmp := model.ZkStatusRsp{
43+
Host: node,
44+
}
45+
body, err := ZkMetric(node, port, "mntr")
46+
if err != nil {
47+
continue
48+
}
49+
err = json.Unmarshal(body, &tmp)
50+
if err == nil {
51+
if tmp.ServerState == "leader" {
52+
leader = node
53+
break
54+
}
55+
}
56+
}
57+
if leader == "" {
58+
return nil, errors.New("no leader zookeeper node")
4359
}
60+
servers := []string{net.JoinHostPort(leader, fmt.Sprint(port))}
4461

4562
c, e, err := zk.Connect(servers, time.Duration(sessionTimeout)*time.Second)
4663
if err != nil {

0 commit comments

Comments
 (0)