consul/agent/router
James Phillips d9a6e2a901
Makes server manager shift away from failed servers from Serf events.
Because this code was doing pointer equality checks, it would work for
the case of a failed attempted RPC because the objects are from the
manager itself:

https://github.com/hashicorp/consul/blob/v1.0.3/agent/consul/rpc.go#L283-L302

But the pointer check would always fail for events coming in from the
Serf path because the server object is newly-created:

https://github.com/hashicorp/consul/blob/v1.0.3/agent/router/serf_adapter.go#L14-L40

This means that we didn't proactively shift RPC traffic away from a
failed server, we'd have to wait for an RPC to fail, which exposes
the error to the calling client.

By switching over to a name check vs. a pointer check we get the correct
behavior. We added a DEBUG log as well to help observe this behavior during
integrated testing.

Related to #3863 since the fix here needed the same logic duplicated, owing
to the complicated atomic stuff.

/cc @dadgar for a heads up in case this also affects Nomad.
2018-02-05 17:56:00 -08:00
..
manager.go Makes server manager shift away from failed servers from Serf events. 2018-02-05 17:56:00 -08:00
manager_internal_test.go agent: move agent/consul/agent to agent/metadata 2017-08-09 14:36:52 +02:00
manager_test.go Saves the cycled server list after a failed ping when rebalancing. (#3662) 2017-11-07 18:13:23 -08:00
router.go agent: drop unused code 2017-08-22 00:02:46 +02:00
router_test.go agent: move agent/consul/servers to agent/router 2017-08-09 14:36:37 +02:00
serf_adapter.go agent: move agent/consul/agent to agent/metadata 2017-08-09 14:36:52 +02:00
serf_flooder.go Add segment addr field to tags for LAN flood joiner 2017-08-30 11:58:29 -07:00