diff --git a/CHANGELOG.md b/CHANGELOG.md index d9d6bb78..a48acd2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## 6.8.1 (unreleased) ### Implementation changes and bug fixes - [Fix URL](https://github.com/rqlite/rqlite/commit/d8e915e0be589b5cf1d593b80985e8247ba5f3d9) for `.ready` CLI command. +- [PR #925](https://github.com/rqlite/rqlite/pull/925): Ignore disco ID if there is preexisting state. Fixes [issue #347](https://github.com/rqlite/rqlite/issues/347). ## 6.8.0 (November 9th 2021) ### New features diff --git a/cmd/rqlited/main.go b/cmd/rqlited/main.go index af01ca5a..3fa072c7 100644 --- a/cmd/rqlited/main.go +++ b/cmd/rqlited/main.go @@ -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) + } } } }