mirror of
https://github.com/kemko/nomad.git
synced 2026-01-04 17:35:43 +03:00
Merge pull request #4383 from hashicorp/b-node-drain-empty-event
nomad: handle edge case where node drain event shouldn't be emitted
This commit is contained in:
@@ -504,6 +504,8 @@ func (n *Node) UpdateDrain(args *structs.NodeUpdateDrainRequest,
|
||||
args.NodeEvent.SetMessage(NodeDrainEventDrainUpdated)
|
||||
} else if node.DrainStrategy != nil && args.DrainStrategy == nil {
|
||||
args.NodeEvent.SetMessage(NodeDrainEventDrainDisabled)
|
||||
} else {
|
||||
args.NodeEvent = nil
|
||||
}
|
||||
|
||||
// Commit this update via Raft
|
||||
|
||||
@@ -917,6 +917,21 @@ func TestClientEndpoint_UpdateDrain(t *testing.T) {
|
||||
require.NotZero(resp3.Index)
|
||||
require.NotZero(resp3.EvalCreateIndex)
|
||||
require.Len(resp3.EvalIDs, 1)
|
||||
|
||||
// Check for updated node in the FSM
|
||||
ws = memdb.NewWatchSet()
|
||||
out, err = state.NodeByID(ws, node.ID)
|
||||
require.NoError(err)
|
||||
require.Len(out.Events, 3)
|
||||
require.Equal(NodeDrainEventDrainDisabled, out.Events[2].Message)
|
||||
|
||||
// Check that calling UpdateDrain with the same DrainStrategy does not emit
|
||||
// a node event.
|
||||
require.Nil(msgpackrpc.CallWithCodec(codec, "Node.UpdateDrain", dereg, &resp3))
|
||||
ws = memdb.NewWatchSet()
|
||||
out, err = state.NodeByID(ws, node.ID)
|
||||
require.NoError(err)
|
||||
require.Len(out.Events, 3)
|
||||
}
|
||||
|
||||
func TestClientEndpoint_UpdateDrain_ACL(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user