client: respect `client_auto_join` after connection loss (#11585)
The `consul.client_auto_join` configuration block tells the Nomad client whether to use Consul service discovery to find Nomad servers. By default it is set to `true`, but contrary to the documentation it was only respected during the initial client registration. If a client missed a heartbeat, failed a `Node.UpdateStatus` RPC, or if there was no Nomad leader, the client would fallback to Consul even if `client_auto_join` was set to `false`. This changeset returns early from the client's trigger for Consul discovery if the `client_auto_join` field is set to `false`.
This commit is contained in:
parent
39acac33a0
commit
6e1311a265
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
client: Fixed a bug where clients would ignore the `client_auto_join` setting after losing connection with the servers, causing them to incorrectly fallback to Consul discovery if it was set to `false`.
|
||||
```
|
|
@ -2690,11 +2690,13 @@ func taskIsPresent(taskName string, tasks []*structs.Task) bool {
|
|||
|
||||
// triggerDiscovery causes a Consul discovery to begin (if one hasn't already)
|
||||
func (c *Client) triggerDiscovery() {
|
||||
select {
|
||||
case c.triggerDiscoveryCh <- struct{}{}:
|
||||
// Discovery goroutine was released to execute
|
||||
default:
|
||||
// Discovery goroutine was already running
|
||||
if c.configCopy.ConsulConfig.ClientAutoJoin != nil && *c.configCopy.ConsulConfig.ClientAutoJoin {
|
||||
select {
|
||||
case c.triggerDiscoveryCh <- struct{}{}:
|
||||
// Discovery goroutine was released to execute
|
||||
default:
|
||||
// Discovery goroutine was already running
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue