Skip to content

kroseneg/old

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

old
Alberto Bertogli ([email protected])
-----------------------------------------------

This is a simple lock daemon called 'old' (from Open Lock Daemon).

Its purpose is to provide a central point where to lock resources in a
distributed environment by using TCP/IP to communicate between clients (the
apps that want to lock objects) and the server.

Objects are identified by strings, so it's really a general purpose server:
you can use it to lock from files to pointers, as long as all your apps have a
coherent object naming scheme.

As I did it just for fun, it's not focused on a special use; also, because
it's quite simple, it should be able to work on a very wide range of
situations.

It provides the basic locking primitives (lock, unlock, trylock) and is able
to cope with network problems like clients crashing while holding locks, or
lock takeover (called 'adoption').

However, it's still beta because it has not been widely tested and it lacks of
some functionality like redundancy, failover or distributed locking; but
anyway all the basic functions are there and it seems to be working pretty
solid and quite usable. Check the TODO list for more details.

It doesn't perform bad, it makes around 1200 (lock A; unlock A) operations per
second on a Pentium II 400Mhz, and about 7850 on a Pentium IV 2.8Ghz. It's
also quite small, the compiled binary is about 10k and the memory footprint
about 300k (depending on the usage, the number of threads, and the amount of
simultaneous locks held). Paralell tests are coherent with those numbers,
reproducing them here would be too much.


There are two libraries in the 'lib' directory which provide simple functions
to talk to the server along with sample code; one in C and one in Python.
These are documented in doc/libs.

All of this is distributed under the Open Software License (which you can find
in doc/license), and the libraries can be source or binary linked to whatever
you want. If you're in doubt, please read the license or just ask me.

If you're intrested, read the code to find out more; most of the documentation
is there, and there's a nice description in doc/network and doc/internals.
There are also manpages for both the lock server and its C library.


I'm really intrested to hear if you tested it, so please let me know.

Thanks,
		Alberto