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@xxxxxxxxxxx > http://www.gluster.org/mailman/listinfo/gluster-devel _______________________________________________ Gluster-devel mailing list Gluster-devel@xxxxxxxxxxx http://www.gluster.org/mailman/listinfo/gluster-devel