I've taken a shot at a regression test in r1086497.

However, I think we may have a larger problem here:

The svn_delta_editor_t API allows change_dir_prop() calls to be
transmitted only after all directory-children of a directory have been
transmitted [1].  How can we generate a dumpfile given that input?


On the one hand, we don't want to buffer entire subtrees rooted in D
while we're waiting for D's properties.

On the other hand, can we dump the properties of D only after dumping
the entire subtree rooted in D?


I expect the 'svnadmin load parser to want to see an entry for D before
seeing an entry for any of its children.  Which, yes, leaves the option
to dump first a skeleton entry for D, then dump D's subtree, and finally
dump *another* "Node-path: D" entry --- but that smells ugly, if not in
outright violation of the dumpfile format.


Thoughts?

Daniel


[1] 
 * 4. A producer must call @c change_dir_prop on a directory either
 *    before opening any of the directory's subdirs or after closing
 *    them, but not in the middle.

neil.win...@bt.com wrote on Mon, Mar 28, 2011 at 13:26:46 +0100:
> On 25 March 2011 at 19:19, Hyrum K Wright wrote
> > On Fri, Mar 25, 2011 at 2:11 PM, C. Michael Pilato <cmpil...@collab.net> 
> > wrote:
> >> On 03/25/2011 11:31 AM, Hyrum K Wright wrote:
> >>> Neil,
> >>> Thanks for the report.  In attempting to reproduce, I wasn't even able
> >>> to get as far as comparing the dumpfiles, as svnrdump asserted
> >>> somewhere in the process.  I opened issue 3844[1] to track this bug,
> >>> and committed an XFailing test in r1085428.  I also marked the issue
> >>> as important for a 1.7.0 release.
> >>>
> >>> -Hyrum
> >>>
> >>> [1] http://subversion.tigris.org/issues/show_bug.cgi?id=3844
> >>
> >> See r1085523.
> > 
> > Thanks, Mike.
> > 
> > Neil, when you get a chance, could you test a r1085523 and see if it
> > fixes your problem?
> > 
> > Cheers,
> > -Hyrum
> 
> Hi guys,
> 
> Sorry, but no cigar :( This probably fixes the assertion found by Hyrum, but 
> doesn't address the original issue. The current test case added to the test 
> suite addresses loading multiple propedits. That's good, but it's not 
> sufficient. The heart of the issue is that a transaction with multiple 
> propedits to a single path is *dumped* incorrectly. So for an original dump 
> representation like this:
> 
> ---
> Node-path: 
> Node-kind: dir
> Node-action: change
> Prop-content-length: 42
> Content-length: 42
> 
> K 3
> foo
> V 3
> bar
> K 3
> bar
> V 3
> baz
> PROPS-END
> ---
> 
> The svnrdump output for the same transaction comes out like this:
> 
> ---
> Node-path: 
> Node-kind: dir
> Node-action: change
> Prop-delta: true
> Prop-content-length: 26
> Content-length: 26
> 
> K 3
> foo
> V 3
> bar
> PROPS-END
> 
> 
> Prop-delta: true
> Prop-content-length: 26
> Content-length: 26
> 
> K 3
> bar
> V 3
> baz
> PROPS-END
> ---
> 
> Note the second "orphaned" prop-delta.
> 
> It would be great if svnrdump produced exactly the same output as svnadmin 
> (it'd make the test assertions nice and easy), but from a bit of 
> experimentation (I haven't read the svnadmin code here) I don't believe that 
> it's necessary for the two prop-deltas actually to be merged for the dumpfile 
> to be valid. So if it's easier to repeat the preceding node-path information 
> for each prop-delta then I guess that would be OK, as long as the net result 
> is the same.
> 
> Thanks,
> Neil

Reply via email to