[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

RE: Cancelling location segments operation from callback

From: Bert Huijben <bert_at_qqmail.nl>
Date: Sun, 26 Jan 2014 12:48:18 +0100

                Branko, Marting,

 

We use this pattern quite a few times in our own Subversion code (usually using the specially invented SVN_ERR_CEASE_INVOCATION code to document this pattern), so there is not really something wrong with this pattern.

 

The problem is that the our implementation of the serf library in <= 1.8.x doesn’t handle these errors properly and doesn’t stop the request’s handling when cancelling. So when you start using the serf ra session again the previous request continues, and you usually get the same error again and again. (This is the result of how serf works)

 

This specific problem is fixed in the ra_serf error handling cleanup that is targeted towards releasing in 1.9.

 

                Bert

 

From: Branko Čibej [mailto:brane_at_wandisco.com]
Sent: zondag 26 januari 2014 04:36
To: users_at_subversion.apache.org
Subject: Re: Cancelling location segments operation from callback

 

On 26.01.2014 04:23, Martin Panter wrote:

This is a followup from my message from a couple months ago:
http://svn.haxx.se/users/archive-2013-11/0165.shtml
 
Basically, I was trying to cancel an svn_ra_get_location_segments()
call by returning an error from the callback. The API call seems to
finish straight away as I expect, but when I subsequently call
svn_ra_get_log2(), it fails in version 1.8.3+, although it succeeds in
1.7.8.
 
I have converted the demonstration into C code:
https://gist.github.com/vadmium/8613200
 
When I played with other kinds of URLs, I noticed that “file:” <file:///\\”> URLs
always work as I expect (no log failure), but that
“svn+ssh://localhost” always returns error 210004 “Malformed network
data”, even in 1.7.8. So this makes me wonder, is Subversion actually
meant to support a callback returning an error to cancel an operation
like I have been doing?

No, callbacks should only return errors if something is wrong. The only correct way to cancel an operation in Subversion is to set the flag that the cancellation callback uses.

-- Brane

-- 
Branko Čibej | Director of Subversion 
WANdisco // Non-Stop Data 
e. brane_at_wandisco.com <mailto:brane_at_wandisco.com> 
Received on 2014-01-26 12:49:18 CET

This is an archived mail posted to the Subversion Users mailing list.