When DistributedEntityOwnershipService dispatches a request to EntityOwnershipShard, it does not report errors (such as AskTimeoutExceptions) except on debug level. This means the application thinks it has a candidate registered, but in fact it is not propagated to backend. At the very least such failures should report an error to bring attention to the problem, but really the frontend should retry forwarding the registration (and unregistration) events.
Furthermore, backend reports a success as soon as the request is enqueued to BatchedModifications - which does not guarantee the candidate has been propagated to all participants.