3 ms·
All timeouts result in exceptions that the client can (or should) handle. Server side can be made idempotent [1]. And there's a control-plane which acts as the
by lunarcave 3y ago
All timeouts result in exceptions that the client can (or should) handle.
Server side can be made idempotent [1]. And there's a control-plane which acts as the orchestrator [2].
It's possible the operator performed and reply got lost. But if there's insufficient data whether it was actually performed, it can be performed again, unless idempotency [1] was requested.
[1] https://docs.differential.dev/advanced/idempotency/ https://docs.differential.dev/advanced/idempotency/
[2] https://docs.differential.dev/advanced/architecture/ https://docs.differential.dev/advanced/architecture/
- pjmlp 3y agoOnly works when there is control over the source code from both sides, and even so, not everything can be made idempotent.
- lunarcave 3y agoThere _is_ control over the source code from both sides, yes. > Not everything can be made idempotent. Can you expand on this, please? I'd appreciate it. If you mean to say that true idempotence can never be achieved, then you're right [1]. If you mean to say that the framework doesn't allow for the same level of guarantees that other widely used distributed system tools (queues, pub-sub, idempotency key headers) allow, then I'd challenge that notion. [1] https://bravenewgeek.com/you-cannot-have-exactly-once-delivery/ https://bravenewgeek.com/you-cannot-have-exactly-once-delive...