mirror of
https://github.com/kemko/nomad.git
synced 2026-01-06 18:35:44 +03:00
move adding node registration event to the state store
This commit is contained in:
committed by
Alex Dadgar
parent
55e0c7d06d
commit
de6199ac45
@@ -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
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user