fix: return a proper error from Node.Join()
This commit is contained in:
parent
836cd1361e
commit
6e8cf18be0
1 changed files with 12 additions and 12 deletions
|
|
@ -3,6 +3,7 @@ package node
|
|||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
|
|
@ -40,25 +41,28 @@ func (r *Role) Join(bootstrap string) error {
|
|||
return errors.New("no masters configured")
|
||||
}
|
||||
|
||||
var errs []error
|
||||
for m := range masters {
|
||||
logger := log.With().Str("host", m).Logger()
|
||||
logger.Debug().Msg("trying to join via master")
|
||||
|
||||
nodes, err := client.Post[[]types.Node](m, "/master/join", r.state.Self)
|
||||
if err != nil {
|
||||
errs = append(errs, err)
|
||||
logger.Debug().Err(err).Msg("unable to join")
|
||||
continue
|
||||
}
|
||||
|
||||
if err := r.state.Registry.Set(*nodes); err != nil {
|
||||
logger.Debug().Err(err).Msg("unable to set master's nodes")
|
||||
errs = append(errs, err)
|
||||
continue
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
return errors.New("unable to join")
|
||||
return fmt.Errorf("unable to join with any master: %w", errors.Join(errs...))
|
||||
}
|
||||
|
||||
func (r *Role) Leave() error {
|
||||
|
|
@ -67,7 +71,7 @@ func (r *Role) Leave() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
sent := false
|
||||
var errs []error
|
||||
for _, m := range masters {
|
||||
logger := log.With().Str("name", m.Hostname).Logger()
|
||||
logger.Debug().Msg("sending leave message")
|
||||
|
|
@ -75,20 +79,16 @@ func (r *Role) Leave() error {
|
|||
_, err := client.Post[any](m.Endpoint, types.PathMasterLeave, r.state.Self)
|
||||
if err != nil {
|
||||
logger.Debug().Err(err).Msg("unable to send leave message")
|
||||
errs = append(errs, err)
|
||||
continue
|
||||
} else {
|
||||
sent = true
|
||||
logger.Debug().Msg("leave message sent")
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !sent {
|
||||
return errors.New("unable to send leave message")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Errorf("unable to send leave message to any master: %w", errors.Join(errs...))
|
||||
}
|
||||
|
||||
func (r *Role) OnStartup(ctx context.Context) error {
|
||||
if r.config.KeepaliveInterval != -1 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue