1
0
Fork 0

Ignore disco ID if there is preexisting state

Fixes https://github.com/rqlite/rqlite/issues/347
master
Philip O'Toole 3 years ago
parent e64aa7b6ea
commit 0a31c90b06

@ -249,7 +249,7 @@ func main() {
// Determine join addresses
var joins []string
joins, err = determineJoinAddresses()
joins, err = determineJoinAddresses(isNew)
if err != nil {
log.Fatalf("unable to determine join addresses: %s", err.Error())
}
@ -350,7 +350,7 @@ func main() {
log.Println("rqlite server stopped")
}
func determineJoinAddresses() ([]string, error) {
func determineJoinAddresses(isNew bool) ([]string, error) {
apiAdv := httpAddr
if httpAdv != "" {
apiAdv = httpAdv
@ -363,17 +363,21 @@ func determineJoinAddresses() ([]string, error) {
}
if discoID != "" {
log.Printf("registering with Discovery Service at %s with ID %s", discoURL, discoID)
c := disco.New(discoURL)
r, err := c.Register(discoID, apiAdv)
if err != nil {
return nil, err
}
log.Println("Discovery Service responded with nodes:", r.Nodes)
for _, a := range r.Nodes {
if a != apiAdv {
// Only other nodes can be joined.
addrs = append(addrs, a)
if !isNew {
log.Printf("node has preexisting state, ignoring Discovery ID %s", discoID)
} else {
log.Printf("registering with Discovery Service at %s with ID %s", discoURL, discoID)
c := disco.New(discoURL)
r, err := c.Register(discoID, apiAdv)
if err != nil {
return nil, err
}
log.Println("Discovery Service responded with nodes:", r.Nodes)
for _, a := range r.Nodes {
if a != apiAdv {
// Only other nodes can be joined.
addrs = append(addrs, a)
}
}
}
}

Loading…
Cancel
Save