On May 15, 2006, at 11:03 PM, Jesus Cea wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Durus release 3.4 adds support for Unix domain sockets. That is very > nice, since we now can do access control over Durus storage server. > > There is a problem, nevertheless. A unix socket is persistent. That > is, > it creates a "socket" file in the filesystem. This file will persist > even if the durus server dies or the machine is rebooted. > > But if the socket file exists, a durus server can't create a new > socket > with that name. That is, if the durus server dies (or the machine > reboots), the socket file is left behind and no other durus server can > be launched with that unix address. Until that file is deleted > manually, > of course. > > I would like to be able to automatize the procedure. I propose the > following algorithm: > > a. Each unix socket "x" has an associated lock file "x.lock". > > b. Before trying to bind the unix socket, try to lock "x.lock". If the > locking fails, then another server already owns the unix socket. Die > gracefully. > > c. If we can lock the file, then no other durus server is using that > unix socket. We can delete the unix domain socket file and "bind" > to it > again, without risk. > > PS: Yes, I know that I can delete the unix socket file while the > machine > is booting, but if the durus server dies and I relaunch it, I can't be > sure I'm launching a single server. The lock ensures that only a > single > durus server is running, and if none is running, we will know it. > > PPS: Having a way to specify a file mode (umask) for the unix domain > socket would be nice. Also owner/group, if we are running as root. > Maybe > a parameter to execute an arbitrary external function instead of the > "bind" would be nice. So I could implement the procedure above without > touching standard durus :-). What if we just factor out a _get_listening_socket() from the serve() method? It seems like that would give you a reasonable path to follow to implement all of this. > > - -- > Jesus Cea Avion _/_/ _/_/_/ _/_/_/ > jcea@argo.es http://www.argo.es/~jcea/ _/_/ _/_/ _/_/ _/_/ > _/_/ > jabber / xmpp:jcea@jabber.org _/_/ _/_/ _/_/_/_/_/ > _/_/ _/_/ _/_/ _/_/ _/_/ > "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ > "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ > "El amor es poner tu felicidad en la felicidad de otro" - Leibniz > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.2.2 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > iQCVAwUBRGlBE5lgi5GaxT1NAQLsiQP+OP18I9bLSsi5lN3jABCLL6ZVbZgpejld > XSRCkRmZisbwMdIJbafOMeQ76QvqZR7Xy318C53bJ/3ITni3QeE77cBKBJl1axkO > tGkXOtTU6CUXnfYhpEHSMfCWcqzFbe5VRoTjx/i9vJxhVjfPpzMZU5em4VM3Xtml > kAwN6a3Zq80= > =EGxo > -----END PGP SIGNATURE----- > _______________________________________________ > Durus-users mailing list > Durus-users@mems-exchange.org > http://mail.mems-exchange.org/mailman/listinfo/durus-users