« Return to Thread: [Issue 3212] New - ra_serf: svn aborts when starting merge

[Issue 3212] New - ra_serf: svn aborts when starting merge

by lgo :: Rate this Message:

Reply to Author | View in Thread

http://subversion.tigris.org/issues/show_bug.cgi?id=3212
                 Issue #|3212
                 Summary|ra_serf: svn aborts when starting merge
               Component|subversion
                 Version|trunk
                Platform|All
                     URL|
              OS/Version|All
                  Status|NEW
       Status whiteboard|
                Keywords|
              Resolution|
              Issue type|DEFECT
                Priority|P3
            Subcomponent|libsvn_ra_serf
             Assigned to|issues@subversion
             Reported by|lgo






------- Additional comments from lgo@... Tue Jun  3 12:40:01 -0700 2008 -------
A few people have reported svn+ra_serf aborting when starting a merge operation.

Bert Huijben:
http://svn.haxx.se/dev/archive-2008-06/0066.shtml

Daniel Shahaf:
http://svn.haxx.se/dev/archive-2008-05/0017.shtml

I can reproduce this issue, but only from time to time. Typically I can
reproduce it once, and then I have to restart my machine to reproduce it again.

The issue happens when certain requests to the server fail and have to be
resent. Wwhat's happening is that ra_serf creates a bucket with the request
body, but that body is eaten and destroyed by the first request. So when the
request is sent a second time, typically the memory is not cleared yet so the
request will succeed, but on destroying that body for the 2nd time, serf will abort.

This is explained in more detail:
http://svn.haxx.se/dev/archive-2007-08/0153.shtml

The correct way of working is simple: instead of giving serf a bucket with the
request body, provide it with a callback that can create the bucket on demand,
twice if needed. We already do this for most of the request types, but not for
all. I could find 8 places where the body_buckets variable is still set. All
these places need to be converted to use body_delegate.

For REPORTs this is a bit difficult, as these are created when driving an
editor, which we don't want to drive a second time.
One of the workarounds is to store the data from the REPORT request on disk too,
and reload it if needed. Another workaround would be to teach the bucket code to
not destroy the bucket data until we explicitly told serf to do so.

Let's use this bug for the cleanup of those 8 'body_buckets locations'.

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@...
For additional commands, e-mail: issues-help@...

 « Return to Thread: [Issue 3212] New - ra_serf: svn aborts when starting merge

LightInTheBox - Buy quality products at wholesale price!