events: emit event when job is deleted (#19903)

When jobs are deregistered with the `purge` flag they are immediately
deleted from the state store instead of just updated to be marked as
stopped.

Without tracking job deletions the event stream would not receive a
`JobDeregistered` event when `purge` was set.
This commit is contained in:
Luiz Aoqui
2024-02-09 18:19:33 -05:00
committed by GitHub
parent 4a8b01430b
commit e2bfdf0c10
3 changed files with 17 additions and 1 deletions

3
.changelog/19903.txt Normal file
View File

@@ -0,0 +1,3 @@
```release-note:improvement
api: emit `JobDeregistered` event when job is deregistered with `purge`
```

View File

@@ -125,6 +125,19 @@ func eventFromChange(change memdb.Change) (structs.Event, bool) {
ACLBindingRule: before,
},
}, true
case "jobs":
before, ok := change.Before.(*structs.Job)
if !ok {
return structs.Event{}, false
}
return structs.Event{
Topic: structs.TopicJob,
Key: before.ID,
Namespace: before.Namespace,
Payload: &structs.JobEvent{
Job: before,
},
}, true
case "nodes":
before, ok := change.Before.(*structs.Node)
if !ok {

View File

@@ -726,7 +726,7 @@ func TestEventsFromChanges_WithDeletion(t *testing.T) {
event := eventsFromChanges(nil, changes)
require.NotNil(t, event)
require.Len(t, event.Events, 1)
require.Len(t, event.Events, 2)
}
func TestEventsFromChanges_WithNodeDeregistration(t *testing.T) {