Pro RPC je velmi důležité, aby operace byly idempotentní.
V lokálním programování (na jednom PC) víš, jestli funkce proběhla, nebo program spadl. V distribuovaném systému (nativním prostředí pro RPC) existuje stav neurčitosti kvůli chybě sítě.
Příklad (lost acknowledgment problem):
- Klient odešle požadavek
deduct($100).
- Server požadavek přijme a strhne peníze.
- Server odešle potvrzení (ACK).
- Potvrzení se ztratí v síti.
- Klientovi vyprší časovač (timeout), protože nedostal odpověď.
- Klient se domnívá, že server nefunguje, a odešle požadavek znovu.
- Pokud operace není idempotentní (např. “strhni 100”), server ji provede podruhé. Uživatel přišel o $200.