[Gluster-devel] Handling locks in NSR
Venky Shankar
vshankar at redhat.com
Wed Mar 2 08:32:11 UTC 2016
On Wed, Mar 02, 2016 at 01:40:08PM +0530, Avra Sengupta wrote:
> Hi,
>
> All fops in NSR, follow a specific workflow as described in this UML(https://docs.google.com/presentation/d/1lxwox72n6ovfOwzmdlNCZBJ5vQcCaONvZva0aLWKUqk/edit?usp=sharing).
> However all locking fops will follow a slightly different workflow as
> described below. This is a first proposed draft for handling locks, and we
> would like to hear your concerns and queries regarding the same.
>
> 1. On receiving the lock, the leader will Journal the lock himself, and then
> try to actually acquire the lock. At this point in time, if it fails to
> acquire the lock, then it will invalidate the journal entry, and return a
> -ve ack back to the client. However, if it is successful in acquiring the
> lock, it will mark the journal entry as complete, and forward the fop to the
> followers.
So, does a contending non-blocking lock operation check only on the leader
since the followers might have not yet ack'd an earlier lock operation?
>
> 2. The followers on receiving the fop, will journal it, and then try to
> actually acquire the lock. If it fails to acquire the lock, then it will
> invalidate the journal entry, and return a -ve ack back to the leader. If it
> is successful in acquiring the lock, it will mark the journal entry as
> complete,and send a +ve ack to the leader.
>
> 3. The leader on receiving all acks, will perform a quorum check. If quorum
> meets, it will send a +ve ack to the client. If the quorum fails, it will
> send a rollback to the followers.
>
> 4. The followers on receiving the rollback, will journal it first, and then
> release the acquired lock. It will update the rollback entry in the journal
> as complete and send an ack to the leader.
What happens if the rollback fails for whatever reason?
>
> 5. The leader on receiving the rollback acks, will journal it's own
> rollback, and then release the acquired lock. It will update the rollback
> entry in the journal, and send a -ve ack to the client.
>
> Few things to be noted in the above workflow are:
> 1. It will be a synchronous operation, across the replica volume.
> 2. Reconciliation will take care of nodes who have missed out the locks.
> 3. On a client disconnect, there will be a lock-timeout on whose expiration
> all locks held by that particular client will be released.
>
> Regards,
> Avra
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at gluster.org
> http://www.gluster.org/mailman/listinfo/gluster-devel
More information about the Gluster-devel
mailing list