subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Conrad Rad <cse....@gmail.com>
Subject ra_serf bug(s)
Date Tue, 07 Oct 2014 12:57:49 GMT
Hi all,

I'm working on a thing that links libsvn_ra_serf (default RA in Fedora
Linux) as well as other pieces of the SVN libraries.

I am using the 'replay' feature to dump edits from a remote repository.

Inadvertently, I requested r0 as my starting_revision. This is my
mistake, however: nothing in the generic replay or ra_serf-specific
replay code produced a warning or error. This could be improved if r0
is always invalid (first bug). (I am less confident about this one
than the next one.)

ra_serf makes a series of valid requests (200 OK) before finally
asking the server for REPLAY of r0. In this case the server is
googlecode.com. In response to the invalid REPLAY it gave a 500 Server
Error response. I will attach a pcap.

The second bug is: ra_serf ignores the 500 response and then waits
forever for a valid response that isn't coming. So at this point the
program is just stuck in svn_ra_replay_range ->
svn_ra_serf__replay_range -> svn_ra_serf__context_run_wait -> ... ->
epoll(2) forever, when it should have aborted and returned an error on
the 500.

I'm guessing that a fix might involve toggling
no_fail_on_http_failure_status or setting up a response_error()
handler on the svn_ra_serf__handler_t, but I'm not an expert on SVN
internals.

I'm using subversion-1.8.10, libserf-1.3.7, and apr-1.5.1 from Fedora 20.

Thanks,
Conrad

Mime
View raw message