[svk-devel] File leak in performing large smerge
Wincent Colaiuta
win at wincent.com
Fri Apr 27 13:46:09 EDT 2007
I was in the middle of a large smerge operation (over 200 revisions)
that I started using this command:
$ svk smerge -If . --track-rename --check-only
$ svk smerge -If . --track-rename
After about 150 revisions had been merged the operation aborted with
the following error:
===> Auto-merging (2455, 2456) /mirrors/MyProject/branches/foobar to /
mirrors/MyProject/trunk (base /mirrors/MyProject/branches/foobar:2455).
Merging back to mirror source svn+ssh://svn.example.com/MyProject.
Collecting renames, this might take a while.
U Thing/Foo+Thing.m
U Thing/Bar+Thing.m
New merge ticket: 28e6020b-a81a-0410-811a-d5d9d52532ec:/branches/
foobar:287
Merge back committed as revision 538.
Syncing svn+ssh://svn.example.com/MyProject
Retrieving log information from 538 to 538
Too many open files: Can't open file '/Users/example/.svk/local/db/
revs/1262': Too many open files
So looks like a resource leak. I tried to pick up where things left
off but that failed as follows:
$ svk smerge -If . --verbatim --track-rename
Auto-merging (2455, 6828) /mirrors/MyProject/branches/foobar to /
mirrors/MyProject/trunk (base /mirrors/MyProject/branches/foobar:2455).
===> Auto-merging (2455, 2456) /mirrors/MyProject/branches/foobar to /
mirrors/MyProject/trunk (base /mirrors/MyProject/branches/foobar:2455).
Merging back to mirror source svn+ssh://svn.example.com/MyProject.
Collecting renames, this might take a while.
U Thing/Foo+Thing.m
U Thing/Bar+Thing.m
New merge ticket: 28e6020b-a81a-0410-811a-d5d9d52532ec:/branches/
foobar:287
Transaction is out of date: Out of date: '/trunk/Thing/Foo+Thing.m'
in transaction '538-1'
Please sync mirrored path /mirrors/MyProject/trunk first.
After syncing as follows:
svk sync -a //mirrors/MyProject
Starting to synchronize //mirrors/MyProject
Syncing svn+ssh://svn.example.com/MyProject
Retrieving log information from 538 to 538
Committed revision 7007 from revision 538.
I again resumed:
svk smerge -If . --verbatim --track-rename
And this time svk was able to continue (and complete the merge of the
remaining hundred or so revisions):
Auto-merging (2456, 6828) /mirrors/MyProject/branches/foobar to /
mirrors/MyProject/trunk (base /mirrors/MyProject/branches/foobar:2456).
===> Auto-merging (2456, 2457) /mirrors/MyProject/branches/foobar to /
mirrors/MyProject/trunk (base /mirrors/MyProject/branches/foobar:2456).
Merging back to mirror source svn+ssh://svn.example.com/MyProject.
Collecting renames, this might take a while.
U Thing/Foo+Thing.m
New merge ticket: 28e6020b-a81a-0410-811a-d5d9d52532ec:/branches/
foobar:288
Merge back committed as revision 539.
Syncing svn+ssh://svn.example.com/MyProject
Retrieving log information from 539 to 539
Committed revision 7008 from revision 539.
On visual inspection it appears that the merge was performed
correctly despite the accidents along the way. Unfortunately the
merge is now done and I can't really do it again. But wanted to
report this anyway in case this likely file leak is not a known issue.
Cheers,
Wincent
More information about the svk-devel
mailing list