move adding node registration event to the state store

This commit is contained in:
Chelsea Holland Komlo
2018-03-07 18:54:52 -05:00
committed by Alex Dadgar
parent 55e0c7d06d
commit de6199ac45
3 changed files with 20 additions and 12 deletions

View File

@@ -129,16 +129,6 @@ func (n *Node) Register(args *structs.NodeRegisterRequest, reply *structs.NodeUp
if args.Node.SecretID != originalNode.SecretID && originalNode.SecretID != "" {
return fmt.Errorf("node secret ID does not match. Not registering node.")
}
} else {
// Because this is the first time the node is being registered, we should
// also create a node registration event
nodeEvent := &structs.NodeEvent{
Message: "Node Registered",
Subsystem: "Server",
Timestamp: time.Now().Unix(),
}
args.Node.NodeEvents = make([]*structs.NodeEvent, 0)
args.Node.NodeEvents = append(args.Node.NodeEvents, nodeEvent)
}
// We have a valid node connection, so add the mapping to cache the

View File

@@ -16,10 +16,14 @@ func TestStateStore_AddSingleNodeEvent(t *testing.T) {
node := mock.Node()
// We create a new node event every time we register a node
err := state.UpsertNode(1000, node)
if err != nil {
t.Fatalf("err: %v", err)
}
require.Equal(1, len(node.NodeEvents))
require.Equal(structs.Subsystem("Server"), node.NodeEvents[0].Subsystem)
require.Equal("Node Registered", node.NodeEvents[0].Message)
nodeEvent := &structs.NodeEvent{
Message: "failed",
@@ -32,8 +36,8 @@ func TestStateStore_AddSingleNodeEvent(t *testing.T) {
ws := memdb.NewWatchSet()
actualNode, err := state.NodeByID(ws, node.ID)
require.Nil(err)
require.Equal(1, len(actualNode.NodeEvents))
require.Equal(nodeEvent, actualNode.NodeEvents[0])
require.Equal(2, len(actualNode.NodeEvents))
require.Equal(nodeEvent, actualNode.NodeEvents[1])
}
// To prevent stale node events from accumulating, we limit the number of
@@ -48,6 +52,9 @@ func TestStateStore_NodeEvents_RetentionWindow(t *testing.T) {
if err != nil {
t.Fatalf("err: %v", err)
}
require.Equal(1, len(node.NodeEvents))
require.Equal(structs.Subsystem("Server"), node.NodeEvents[0].Subsystem)
require.Equal("Node Registered", node.NodeEvents[0].Message)
for i := 1; i <= 20; i++ {
nodeEvent := &structs.NodeEvent{

View File

@@ -527,6 +527,17 @@ func (s *StateStore) UpsertNode(index uint64, node *structs.Node) error {
node.ModifyIndex = index
node.Drain = exist.Drain // Retain the drain mode
} else {
// Because this is the first time the node is being registered, we should
// also create a node registration event
nodeEvent := &structs.NodeEvent{
Message: "Node Registered",
Subsystem: "Server",
Timestamp: node.StatusUpdatedAt,
}
node.NodeEvents = make([]*structs.NodeEvent, 0)
node.NodeEvents = append(node.NodeEvents, nodeEvent)
node.CreateIndex = index
node.ModifyIndex = index
}