github.com/swiftstack/ProxyFS@v0.0.0-20210203235616-4017c267d62f/pfsagentd/LockManagement.uml (about)

     1  @startuml
     2  
     3  scale 800 width
     4  
     5  state None : No lease held
     6  state SharedLeaseGranted : Able to grant multiple SharedLocks
     7  state SharedLeaseRequested : Awaiting ProxyFS to grant either\nSharedLease or ExclusiveLease
     8  state SharedLeasePromoting : Awaiting ProxyFS to grant ExclusiveLease\nor be forced to release SharedLease
     9  state ExclusiveLeaseGranted : Able to grant multiple\nSharedLocks or one ExclusiveLock
    10  state ExclusiveLeaseRequested : Awaiting ProxyFS to\ngrant ExclusiveLease
    11  
    12  [*] --> None
    13  
    14  None --> SharedLeaseRequested : SharedLockRequest
    15  None --> ExclusiveLeaseRequested : ExclusiveLockRequest
    16  
    17  SharedLeaseRequested --> SharedLeaseGranted
    18  SharedLeaseRequested --> ExclusiveLeaseGranted
    19  
    20  SharedLeaseGranted --> SharedLeaseGranted : SharedLockRequest
    21  SharedLeaseGranted --> SharedLeasePromoting : ExclusiveLockRequest
    22  
    23  SharedLeasePromoting --> ExclusiveLeaseGranted
    24  ExclusiveLeaseRequested --> ExclusiveLeaseGranted
    25  
    26  ExclusiveLeaseGranted --> ExclusiveLeaseGranted : SharedLockRequest
    27  ExclusiveLeaseGranted --> ExclusiveLeaseGranted : ExclusiveLockRequest
    28  
    29  @enduml