Currently, we hash the full name of each object and decide by % 2 which endpoint is responsible. This can spread relatives like host->service, checkable->downtime/notification/... apart, so that theoretically each thing, eg. trigger a notification, only happens after a cluster message makes if from node A to B. Greetings to lags and message loss!
If ApiListener::UpdateObjectAuthority() would hash not the whole name, but only the part up to the first !, everything under a host would be processed on the same node, reducing latency and making stuff more robust.
Currently, we hash the full name of each object and decide by % 2 which endpoint is responsible. This can spread relatives like host->service, checkable->downtime/notification/... apart, so that theoretically each thing, eg. trigger a notification, only happens after a cluster message makes if from node A to B. Greetings to lags and message loss!
If ApiListener::UpdateObjectAuthority() would hash not the whole name, but only the part up to the first !, everything under a host would be processed on the same node, reducing latency and making stuff more robust.
Idea (c) @julianbrost ref/IP/52571