[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