- Shipped
- August 9, 2026 at 8:25 PM UTC
- Author
- Kamo
- Commit
- 0e2f66d
CockroachDB unique_rowid() produces 64-bit ids. A real one from contact_books is 1200081912680906758; JavaScript's JSON.parse rounds anything past Number.MAX_SAFE_INTEGER, so the browser held 1200081912680906800 and every request made with it answered "ContactBook not found" for a book that plainly existed. Only newly created books were affected in practice, because those are the ones unique_rowid() numbers. EmailService deliberately has no global ToStringSerializer for Long — EmailMessage.uid is a number the mailbox relies on — so the ids are declared as String per DTO, the way CorrespondentResolver already does. Bulk request bodies take string ids too; a path variable was always safe, since a URL segment is text either way. ContactIdPrecisionTest pins it: the real id serialises as a quoted string, and survives the round trip the browser actually makes.