On 26 November 2015 at 12:11, Bert Huijben <b...@qqmail.nl> wrote:
>> -----Original Message-----
>> From: Ivan Zhakov [mailto:i...@visualsvn.com]
>> Sent: donderdag 26 november 2015 09:54
>> To: Bert Huijben <b...@qqmail.nl>
>> Cc: dev@subversion.apache.org
>> Subject: Re: svn commit: r1716575 - in
>> /subversion/trunk/subversion/libsvn_ra_serf: commit.c ra_serf.h util.c
>>
>> On 26 November 2015 at 11:41, Bert Huijben <b...@qqmail.nl> wrote:
>> >> -----Original Message-----
>> >> From: Ivan Zhakov [mailto:i...@visualsvn.com]
>> >> Sent: donderdag 26 november 2015 09:19
>> >> To: dev@subversion.apache.org; Bert Huijben <b...@qqmail.nl>
>> >> Subject: Re: svn commit: r1716575 - in
>> >> /subversion/trunk/subversion/libsvn_ra_serf: commit.c ra_serf.h util.c
>> >>
>> >> On 26 November 2015 at 11:05, <rhuij...@apache.org> wrote:
>> >> >
>> >> > Author: rhuijben
>> >> > Date: Thu Nov 26 08:05:36 2015
>> >> > New Revision: 1716575
>> >> >
>> >> > URL: http://svn.apache.org/viewvc?rev=1716575&view=rev
>> >> > Log:
>> >> > In ra_serf: when a to-be committed file has text and property changes
>> to
>> >> be
>> >> > applied, pipeline both requests.
>> >> >
>> >> This could fail over HTTP/2 if both pipelined requests will be handled
>> >> by different worker threads: FSFS doesn't allow concurrent access to
>> >> transactions.
>> >
>> > I'm surprised to learn that. I would have guessed concurrent access was
>> > always part of the design of the fs layer, by the way we use it in mod_dav.
>> >
>> > I hope we can somehow lift that restriction, as improving commit
>> performance
>> > over mod_dav is high on a few wish lists.
>> >
>> First of all I'm not sure that concurrent *writing* could speed up
>> commit: there is no fsync() calls when working with transactions. As
>> far I remember svn:// also waits for every TXN operation to complete
>> before sending next one, so svn:// and http:// performance should be
>> the same when working over high-latency network.
>
> No, in svn:// the client sends out all the requests and only peeks the
> connection to see if there is waiting data (an error) during commit. The 
> client
> only waits for the server after the entire commit is completed. Not after 
> every txn operation.
Yes, you are right. But such error handling will make connection
unusable after error, is not it? And as far I remember ra_svn doesn't
have code to reconnect if needed.

>
> This is why 'in general' you get not identical error reporting on commits 
> when you use
> svn:// (or svn+ssh://, etc.). In many cases the only failure you see is the 
> text from the
> server as the client doesn't even know which file/directory failed during the 
> commit.
>
> With a bit of luck you receive errors a bit earlier than the final commit 
> step. But with
> <= 1.9.0 this didn't work for svn+ssh:// on Windows at all. (We handled the 
> error for
> not implemented as if no data was waiting)
>
Ouch. I think it's just an example that async/delayed error handling
is very tricky.


-- 
Ivan Zhakov

Reply via email to