[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
history and val-tags locks.
From: |
Derek Price |
Subject: |
history and val-tags locks. |
Date: |
Wed, 27 Apr 2005 15:15:58 -0400 |
User-agent: |
Mozilla Thunderbird 1.0.2 (Windows/20050317) |
Hey all,
I'm getting ready to make two changes, possibly on stable.
The first would be to add file locking for the CVSROOT/history and
CVSROOT/val-tags files. I have some reports of massively corrupted
history files in large repositories, and I don't see any other likely
cause. Similarly, I expect locking will also be necessary on val-tags
in such a large repository and the additional code will be minimal after
I add the history locking stuff.
I was thinking that I would make totally separate lock dirs for this
(#cvs.history.lock and #cvs.val-tags.lock or somesuch) to allow
concurrent write access to other CVSROOT files, history, and val-tags.
I don't think deadlock will be an issue - despite the fact that any
given process writing to the history file or val-tags might hold any
number of other locks, the history or val-tags lock will always be
"last" in the chain and only held for the duration of the write of a
single line to the file. Does anyone see any problems with that design?
Since file corruption is the current consequence of not having these
locks, I thought this would be justified on stable. Any objections?
The other set of changes I was considering would be to enable a number
of new keywords for the config file to allow CVS to search for config
files in new locations. I would not be changing the default locations,
but the new setup would enable something like the following to be
specified in CVSROOT/config:
CheckoutListFile $CVSROOT/CVSROOT/admin/checkoutlist
CommitInfoFile $CVSROOT/CVSROOT/triggers/commitinfo
CVSIgnoreFile $CVSROOT/CVSROOT/cvsignore
CVSWrappersFile $CVSROOT/CVSROOT/admin/cvswrappers
EditInfoFile $CVSROOT/CVSROOT/triggers/editinfo
HistoryFile $CVSROOT/CVSROOT/logs/history/%Y%m%d
HistorySearch $CVSROOT/CVSROOT/logs/history/*
LogInfoFile $CVSROOT/CVSROOT/triggers/loginfo
ModulesFile $CVSROOT/CVSROOT/modules
NotifyFile $CVSROOT/CVSROOT/triggers/notify
PasswdFile $CVSROOT/CVSROOT/admin/passwd
RCSInfoFile $CVSROOT/CVSROOT/triggers/rcsinfo
ReadersFile $CVSROOT/CVSROOT/admin/readers
TagInfoFile $CVSROOT/CVSROOT/triggers/taginfo
ValTagsFile $CVSROOT/CVSROOT/admin/val-tags
VerifyMsgFile $CVSROOT/CVSROOT/triggers/verifymsg
WritersFile $CVSROOT/CVSROOT/admin/writers
Note that HistoryFile has an argument that would basically be run
through strftime, to enable log rotation. Also see the HistorySearch,
which would be used as a file glob to locate history files to be read
for executions of the `cvs history' command.
Regards,
Derek
signature.asc
Description: OpenPGP digital signature
- history and val-tags locks.,
Derek Price <=