fix(machine): a taken endpoint id is a conflict, not a server fault

A host reporting an endpoint id another machine already holds hit the unique
index, and the raw refusal reached the global handler as a 500 -- telling a
host its beat broke the server rather than that the id is taken. It is now the
409 every other conflict here gives, and the route documents it.

Checked-then-written would be worse rather than better: two hosts reporting the
same id in the same instant both read "nobody holds it" and both write, which
is precisely what the index is for. The read would add a query and remove
nothing.

Before:
  expect(res.status).toBe(409)
  Received: 500
This commit is contained in:
Wanjohi
2026-09-07 00:19:34 +03:00
parent 49ae45624e
commit 51d25f3e8c
4 changed files with 78 additions and 17 deletions

View File

@@ -239,7 +239,8 @@ export namespace MachineApi {
},
400: ErrorResponses[400],
403: ErrorResponses[403],
404: ErrorResponses[404]
404: ErrorResponses[404],
409: ErrorResponses[409]
}
}),
validator(