Ok, I am waving the white flag as far as implementing a fix for issue
#3657 in the RA layer.  I simply don't see how it can be done outside
of this:  Put the DAV update report handler into send-all=TRUE
<S:update-report send-all=TRUE> mode when creating a
svn_ra_reporter3_t * during a merge/diff.  This would prevent
<S:fetch-props/> response that causes the client to fetch *all* the
properties of a path which subsequently pushes these to the
svn_delta_editor_t callbacks as if they were all prop *changes* (as
Mike discussed here
http://subversion.tigris.org/issues/show_bug.cgi?id=3657#desc9).

fyi: Currently this is how the two DAV RA layers use send-all mode:

               send-all   send-all
               mode       mode
  operation    ra_serf    ra_neon
  ---------    --------   ---------
  update       FALSE      TRUE
  status       FALSE      TRUE
  switch       FALSE      TRUE
  diff         FALSE      FALSE

In that attached patch I reverted r966822 and tried the aforementioned
approach by tweaking ra_neon so the send-all mode on diff/merge is
TRUE.  The whole test suite passes (including the test for issue
#3657).  I haven't got an equivalent change to ra_serf to work yet,
but I'm not too worried about that yet because...

...After testing out this idea, I realized the problem with this
approach: It reopens issue #2048 'Primary connection (of parallel
network connections used) in ra-dav diff/merge timeout
unnecessarily.':

  http://subversion.tigris.org/issues/show_bug.cgi?id=2048
  http://svn.apache.org/viewvc?view=revision&revision=853457

So I'm at a dead-end right now.  I'm happy to revert r966822 and
reopen issue #3657 if the consensus is that my initial fix is a sloppy
band-aid to cover incorrect ra_neon/ra_serf behavior and that the
latter two are where the fix belongs.

Paul

Reply via email to