[Server-devel] [ejabberd] mnesia corruption with concurrent ejabberdctl usage
Martin Langhoff
martin.langhoff at gmail.com
Mon Dec 28 14:08:05 EST 2009
On Mon, Dec 28, 2009 at 7:18 PM, Badlop <badlop at gmail.com> wrote:
> I don't know if your ejabberdctl shell script has the problem
> described in this thread/message:
> http://lists.jabber.ru/pipermail/ejabberd/2009-September/005351.html
That sure looks like the smoking gun. To check I am understanding this right
- It is not safe to run many ejabberdctl instances because they
always use the same "connection name"
- If we give a truly random connection name, no overlaps happen, but
erl will leak handles/processes/whatever
- So a small pool of names with some locking may work? Modern distros
carry flock, so we could say (pseudo-shell):
MAXCONNECTIONS=100
CONNLOCKDIR=/var/lock/ejabberd/ejabberdctl
for CONNID in 1..$MAXCONNECTIONS; do
if flock -n "$CONNLOCKDIR/ctl-ejabberd-$CONNID at localhost" \
erl -sname "ctl-ejabberd-$CONNID at localhost" ... ; then
break
cheers,
m
--
martin.langhoff at gmail.com
martin at laptop.org -- School Server Architect
- ask interesting questions
- don't get distracted with shiny stuff - working code first
- http://wiki.laptop.org/go/User:Martinlanghoff
More information about the Server-devel
mailing list