GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  AELOCK (5)

NAME

aegis locks - how locking works, and which commands use them

CONTENTS

Description
     Dining Philosophers
     Listing Locks
     Known Problems
Commands
See Also
Copyright
Author

DESCRIPTION

Aegis maintains a database of information about the projects in its care, and the various changes, both completed and in progress. In order to ensure the integrity of this database, and also your project repository, it uses locks.

From time to time, these locks are visible to the users, because they will be told that a command is waiting for a particular lock. For some transactions, this can be a long wait.

    Dining Philosophers

While UNIX supplies locks in various flavors, if you need an entire set of locks simultaneously, there is no elegant [lq]all or nothing [rq] interface available. This is unsurprising, as this is one of the classic computer science problems, known as the Dining Philosophers problem.

The master lock is used to solve the Dining Philosophers problem, and is meant to be very transient. It is only held while the other locks which are required (frequently two or more, hence the problem) are requested - non[hy]blocking. Once they are all obtained (or not, and any partials given back) the master lock is released. It is usually held for much less than a second. If you notice the master lock being held, it is almost always a symptom of the NFS lock daemon misbehaving.

If the lock(s) could not be obtained, the blocking lock is waited on (without the master). This is when the "waiting for" message is issued. When obtained, it is released and the whole cycle starts again. This is why you occasionally see a series of "waiting for" messages. (This could maybe be optimized some, but it is still possible to block on yet another lock, and they you have to release all and wait again. As yet, I’m not convinced the extra code complexity is required.)

    Listing Locks

There is a command available to list the current Aegis locks.
aegis -list locks
Note that the project names are change numbers are guesses as the locks are hashed over a 16[hy]bit range, and range overlaps are possible. Collisions are also possible, but fortunately rarer.

    Known Problems

There is a known problem with the HP/UX NFS clients. If you see persistent [lq]no locks available[rq] error messages when /usr/local/lib is NFS mounted, try making the /usr/local/lib/lockfile file world writable. chmod 666 /usr/local/lib/lockfile There is the possibility of a denial of service attack (which is why the default is 0600) but since you are presently denied service anyway, it’s academic.

COMMANDS

The following table shows the locks taken by the various commands. Note that theoretically some of the commands take too few locks, but this has yet to prove to be a problem in practice. Also, "project state file" and "change state file" are the same thing for branches, it just depends which way you are looking at them at the time.

CommandGlobal State File Project State File Project Base line Ance stor Base lines Change State File User State File       
aeb (dev)..sharedsharedexclusive.      
aeb (int)...sharedexclusive.      
aeca....exclusive.      
aechown....exclusiveexclusive      
aeclean....exclusive.      
aeclone.exclusive..exclusiveexclusive      
aecp.,,,exclusive.      
aecpu....exclusive.      
aed.,,,exclusive.      
aedb....exclusiveexclusive      
aedbu....exclusiveexclusive      
aede.,..exclusiveexclusive      
aedeu....exclusiveexclusive      
aedn.exclusive....      
aeib.exclusive..exclusiveexclusive      
aeibu.exclusive..exclusiveexclusive      
aeifail.exclusive..exclusiveexclusive      
aeipass.exclusiveexclusive.exclusiveexclusive      
aemv.,,,exclusive.      
aena.exclusive....      
aenbr.exclusive....      
aenbruexclusiveexclusive....      
aenc.exclusive....      
aencu.exclusive....      
aend.exclusive....      
aenf....exclusive.      
aenfu....exclusive.      
aeni.exclusive....      
aenpaexclusive.....      
aenprexclusive.....      
aenrv.exclusive....      
aent.exclusive..exclusive.      
aentu....exclusive.      
aepa.exclusive....      
aera.exclusive....      
aerd.exclusive....      
aerfail....exclusiveexclusive      
aeri.exclusive....      
aerm.,..exclusive.      
aermu....exclusive.      
aermprexclusive.....      
aerpaexclusive.....      
aerpass....exclusive.      
aerpu....exclusive.      
aerrv.exclusive....      
aet..,,exclusive.      

SEE ALSO

You may wish to see the manual pages of all of the above commands. Many have descriptions of the locking interactions.

COPYRIGHT

aegis version 4.25.D510
Copyright © 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Peter Miller

The aegis program comes with ABSOLUTELY NO WARRANTY; for details use the ’aegis -VERSion License’ command. This is free software and you are welcome to redistribute it under certain conditions; for details use the ’aegis -VERSion License’ command.

AUTHOR

Peter MillerE[hy]Mail:pmiller@opensource.org.au
/\/\*WWW:http://miller.emu.id.au/pmiller/
Search for    or go to Top of page |  Section 5 |  Main Index


Reference Manual *(N) LOCKING (5) *(N)

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.