github.com/swiftstack/ProxyFS@v0.0.0-20210203235616-4017c267d62f/pfsagentd/LeaseManagement.uml (about) 1 @startuml 2 3 scale 2400 height 4 skinparam StateFontSize 32 5 skinparam StateAttributeFontSize 28 6 skinparam ArrowFontSize 28 7 8 state None : No leases granted 9 state SharedLeaseGrantedRecently : One or more SharedLeases\ngranted not long ago 10 state SharedLeaseGrantedLongAgo : One or more SharedLeases\ngranted for some time 11 state ExclusiveLeaseGrantedRecently : One ExclusiveLease\ngranted not long ago 12 state ExclusiveLeaseGrantedLongAgo : One ExclusiveLease\ngranted for some time 13 state SharedLeaseReleasing : SharedLease holders asked to release\nto enable granting ExclusiveLease 14 state SharedLeaseExpired : SharedLease holder failed to release 15 state ExclusiveLeaseDemoting : ExclusiveLease holder asked to demote\nto enable granting SharedLeases 16 state ExclusiveLeaseReleasing : ExclusiveLease holder asked to release\nto enable granting ExclusiveLease 17 state ExclusiveLeaseExpired : ExclusiveLease holder failed to demote or release 18 19 [*] --> None 20 21 None --> SharedLeaseGrantedRecently : "1st SharedLease\nrequest" 22 None --> ExclusiveLeaseGrantedRecently : "ExclusiveLease\nrequest" 23 24 SharedLeaseGrantedRecently --> SharedLeaseGrantedRecently : Subsequent SharedLease request 25 SharedLeaseGrantedRecently --> SharedLeaseGrantedLongAgo : "Minimum SharedLease\nhold time exceeded" 26 SharedLeaseGrantedRecently --> ExclusiveLeaseGrantedRecently : "Last SharedLock release\n(ExclusiveLease pending)" 27 SharedLeaseGrantedRecently --> None : "Last SharedLock release\n(nothing pending)" 28 29 SharedLeaseGrantedLongAgo --> SharedLeaseGrantedRecently : Subsequent SharedLease request 30 SharedLeaseGrantedLongAgo --> SharedLeaseReleasing : ExclusiveLease request pending 31 SharedLeaseGrantedLongAgo --> None : Last SharedLock release 32 33 SharedLeaseReleasing --> SharedLeaseReleasing : "Non-last SharedLease\nrelease" 34 SharedLeaseReleasing --> ExclusiveLeaseGrantedRecently : "Last SharedLease\nrelease" 35 SharedLeaseReleasing --> SharedLeaseExpired : "Maximum SharedLease\nrelease time exceeded" 36 37 SharedLeaseExpired --> ExclusiveLeaseGrantedRecently : \"Expired SharedLeases\nimplicitly released" 38 39 ExclusiveLeaseGrantedRecently --> ExclusiveLeaseGrantedLongAgo : "Minimum ExclusiveLease\nhold time exceeded" 40 ExclusiveLeaseGrantedRecently --> SharedLeaseGrantedRecently : "ExclusiveLease release\n(SharedLease pending)" 41 ExclusiveLeaseGrantedRecently --> ExclusiveLeaseGrantedRecently : "ExclusiveLease release\n(ExclusiveLease pending)" 42 ExclusiveLeaseGrantedRecently --> None : "ExclusiveLease release\n(nothing pending)" 43 44 ExclusiveLeaseGrantedLongAgo --> ExclusiveLeaseDemoting : SharedLease request pending 45 ExclusiveLeaseGrantedLongAgo --> ExclusiveLeaseReleasing : ExclusiveLease request pending 46 ExclusiveLeaseGrantedLongAgo --> None: "ExclusiveLease\nrelease" 47 48 ExclusiveLeaseDemoting --> SharedLeaseGrantedRecently : "ExclusiveLease\ndemote or release" 49 ExclusiveLeaseDemoting --> ExclusiveLeaseExpired : "Maximum ExclusiveLease\ndemote time exceeded" 50 51 ExclusiveLeaseReleasing --> ExclusiveLeaseGrantedRecently : "ExclusiveLease\nrelease" 52 ExclusiveLeaseReleasing --> ExclusiveLeaseExpired : "Maximum ExclusiveLease\nrelease time exceeded" 53 54 ExclusiveLeaseExpired --> SharedLeaseGrantedRecently : "Expired ExclusiveLease\nimplicitly released\n(SharedLease pending)" 55 ExclusiveLeaseExpired --> ExclusiveLeaseGrantedRecently : "Expired ExclusiveLease\nimplicitly released\n(ExclusiveLease pending)" 56 57 @enduml