CVS History Size Limit
When I came to work this morning some colleagues complained about the CVS server not working properly. I tried myself and got a
Terminated with signal 25
error, no matter what I did. I could neither check out files nor commit modifications or new files.
Update: raghukumar.c _@_ tavant.com seems to have got a slightly different message (CVS Terminated with fatal signal 25) which I include here to improve search engine hits.
I had a look at the server and could not find anything, neither in the logs nor the usual suspects like exceeded quotas, full partitions or permissions. I suspected some sort of automatic update by RedHat's up2date, but that was not the case, either.
It took me a while until the CVSROOT/history file' size in the repository in question caught my eye with a size of precisely 2GB. Searching the net did not give me any hints about a limitation of that file's size, but apparently it is there. I could easily resolve the issue though, because I saw that when setting up the server months ago I had accidentally forgotten to reduce the LogHistory
setting in CVSROOT/config. It had tracked each and every checkout, local delete, merges, conflicts etc.
With a little help from grep
I managed to reduce the file size from 2GB to about 50MB. I just ran the following on the server's shell after I had disabled the CVS access by stopping xinetd
:
egrep -v "^[TMAR].*$" > history.new
mv history history.full
mv history.new history
I kept the original file just for sure. After restarting xinetd
people could not check in files, because there were some stale locks left. So I had to do a
find /var/lock/cvs -iname #cvs.rfl* -exec rm {} \;
to get rid of those. After that all problems vanished.
I think I will still file a bug report, because even though we are very unlikely to hit the limit again considering the growth rate, but maybe someone depends on a finer logging. At least it should be documented.
Comments