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