go-graphite / buckytools

Go implementation of useful tools for dealing with Graphite's Whisper DBs and Carbon hashing
Other
19 stars 8 forks source link

signal SIGSEGV: segmentation violation code=0x1 #21

Open NikitaPuglachenko opened 4 years ago

NikitaPuglachenko commented 4 years ago

When one of nodes disabled, bucky server command ended with crash:

[grph-st3 ~]# bucky servers
2019/12/27 12:27:35 Error retrieving URL: Get http://grph-st2.infra:4242/hashring: dial tcp 10.10.10.2:4242: connect: connection refused
2019/12/27 12:27:35 Cluster unhealthy: grph-st2.infra:4242: Get http://grph-st2.infra:4242/hashring: dial tcp 10.10.10.2:4242: connect: connection refused
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x6a0554]

goroutine 1 [running]:
main.isHealthy(0xc000112080, 0xc0001de100, 0x3, 0x4, 0x3)
    /root/go/src/github.com/go-graphite/buckytools/cmd/bucky/cluster.go:116 +0x184
main.GetClusterConfig(0x75e8dd, 0xe, 0x6, 0x75c300, 0x7)
    /root/go/src/github.com/go-graphite/buckytools/cmd/bucky/cluster.go:96 +0x541
main.serversCommand(0x75c836, 0x7, 0x777488, 0x75cfa6, 0x9, 0x769090, 0x29, 0x76fc8c, 0x196, 0xc0000608a0, ...)
    /root/go/src/github.com/go-graphite/buckytools/cmd/bucky/servers.go:26 +0x4b
main.main()
    /root/go/src/github.com/go-graphite/buckytools/cmd/bucky/main.go:101 +0x1de
[grph-st3 ~]# 

If all nodes are alive - all good:

[grph-st1 ~]$ bucky servers
Buckd daemons are using port: 4242
Hashing algorithm: [fnv1a: 4 nodes, 100 replicas, 400 ring members grph-st1.infra:2003=a grph-st2.infra:2003=b grph-st3.infra:2003=c grph-st4.infra:2003=d]
Number of replicas: 100
Found these servers:
    grph-st1.infra
    grph-st2.infra
    grph-st3.infra
    grph-st4.infra

Is cluster healthy: true