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