Skip to content

Praefect: avoid early request cancellation when queueing replication jobs

When Praefect receives modification RPC it must create replication events and put them into the storage, so they can be fetched and executed for proper storage. Each RPC call has a context.Context that is usually time-limited.
Now same Context is used for execution of RPC and for storing of replication events.
Propagation of RPC call can take too long and there won't be enough time to persist replication events. As a result secondary storages won't be properly updated/modified (possible data loss).

/cc @zj-gitlab @jramsay

Edited by Pavlo Strokov
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information