savannah-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[savannah-help-public] [sr #109208] Spurious lock on gnubg cvs repositor


From: Bob Proulx
Subject: [savannah-help-public] [sr #109208] Spurious lock on gnubg cvs repository
Date: Wed, 21 Dec 2016 06:05:36 +0000 (UTC)
User-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36

Follow-up Comment #6, sr #109208 (project administration):

Assaf, My NFS comment was a red herring. That didn't apply here. Sorry. I was
mistaken. I believe the nobody files in the /var/lock/cvs are created by the
pserver running as user nobody.

Those top level lock directories need to exist for cvs or cvs will complain
with a fatal error.  Lower level directories are made by cvs on the fly. I
believe that pserver also requires it even though pserver shouldn't need to
lock anything. (An easy test is to take a test project and remove the top
level directory and then check out using the pserver.)

With a default, default cvs installation those lock files go into the
repository.  All ssh access is by the user which has write access by group
access.  But with the pserver running as a non-priviledged user it can't do
this.  With many pserver installations all cvs users and the pserver would be
in a "pubcvs" group.  But that isn't good for isolating different savannah
projects from each other.  Therefore the pserver running as any single group
is problematic.  Therefore the lock directory is moved elsewhere out of the
repository.

The file system holding those locks is on a tmpfs ram file system and
evaporates every reboot.  Therefore at boot time they need to be created. If
you look on vcs in /etc/init.d/cvs_lockdirs you will see the script someone
previously wrote to do this. I migrated that to vcs0 in /etc/rc.local (for
others reading, rc.local because the Trusquel 7 system uses upstart but the
next one will be systemd and I didn't want to do three different init
scripts). In rc.local I wrote the lock direction creation somewhat differently
using find and -print0 because I didn't like using ls | xargs which has data
dependent failure possibilities.

You can remove lower level directories.  They will be recreated as they are
needed by cvs.  The top level directory needs to exist however. If created by
an ssh user they will be owned by the ssh user. Probably we should ensure that
the directories below are of the project group. I don't think that was being
done before.

I have been looking on vcs expecting to find a cronjob that will create those
top level directories when new cvs projects are created.  So far I have not
found one. I have only found the creation of them at boot time. This looks
like a bug that should be addressed. Probably not so many new cvs projects are
being created these days and so not being tickled.

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/support/?109208>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]