Button for 1977 Button for 1984 Button for 1990 Button for 1995 Button for MDC Button for notes Button for examples

OMI - Complex Operations

1995 Version of ANSI (Equivalent to Current ISO Version) of Standard

B.6 Complex operations
B.6.1 Lock

4.3.4 describes a complex lock, in which a client requests an atomic lock involving nrefs on different servers. The agent makes single lock requests to the servers and, if some of them fail, unlocks those that succeeded and then tries the whole procedure again.

This method avoids deadlock between conflicting complex locks, but it can generate much network traffic as agents repeat their requests, and (given just the wrong timings) a condition known as live-lock. Therefore, the agent should introduce a delay before retrying the lock. If the operation continues to fail, the length of the delay should be increased. While this "backing off" does not guarantee avoidance of live-lock, it greatly reduces the probability. The initial delay time, increase in delay and maximum delay are left to the implementer.

OMI includes requests to unlock all nrefs held by one client, and to unlock all nrefs held by all clients on a node. These requests facilitate the argumentless LOCK and simplify the agent, which would otherwise have to remember what nrefs it holds on the server’s node.

Button for 1977 Button for 1984 Button for 1990 Button for 1995 Button for MDC Button for notes Button for examples

Copyright © Standard Documents; 1977-2024 MUMPS Development Committee;
Copyright © Examples: 1995-2024 Ed de Moel;
Copyright © Annotations: 2003-2008 Jacquard Systems Research
Copyright © Annotations: 2008-2024 Ed de Moel.

This page most recently updated on 14-Nov-2023, 21:51:15.

For comments, contact Ed de Moel (demoel@jacquardsystems.com)