You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It is two counters: RO and RW. RO reference counter protects garbage bucket from being deleted while it has some active requests working with it. RW reference counter will protect bucket from relocation by a rebalancer or an explicit bucket_send, while it has active read-write requests. References are not persisted since they count number of active requests, but on restart all requests are dropped. Bucket refs should have a public API for manual work, and maybe an automatic ref/unref via IPROTO option, or via a special wrapper function, like vshard.storage_call.
Please, note that request != transaction. A request is usually a stored procedure call, making a lot of transactions on a bucket. When a request works with multiple buckets, it should be able to reference each of them via public API before usage. In vshard it looks like this: vshard.storage.bucket_refro(10) --do some work, many transactions-- vshard.storage.bucket_unrefro(10). A user expects that a bucket will not be relocated nor deleted by GC during a request.
It is two counters: RO and RW. RO reference counter protects garbage bucket from being deleted while it has some active requests working with it. RW reference counter will protect bucket from relocation by a rebalancer or an explicit bucket_send, while it has active read-write requests. References are not persisted since they count number of active requests, but on restart all requests are dropped. Bucket refs should have a public API for manual work, and maybe an automatic ref/unref via IPROTO option, or via a special wrapper function, like vshard.storage_call.
Please, note that request != transaction. A request is usually a stored procedure call, making a lot of transactions on a bucket. When a request works with multiple buckets, it should be able to reference each of them via public API before usage. In vshard it looks like this: vshard.storage.bucket_refro(10) --do some work, many transactions-- vshard.storage.bucket_unrefro(10). A user expects that a bucket will not be relocated nor deleted by GC during a request.
Follows #3986.
The text was updated successfully, but these errors were encountered: