git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4 2/2] git-svn: allow git-svn fetching to work using serf

From
Kyle J. McKay <mackyle@gmail.com>
Date
Jul 18, 2013, 23:31 UTC
Message-ID
<53FD2913-2A8E-42E1-9C76-D0AEBD76E0DA@gmail.com>
In-Reply-To
<20130718192943.GT14690@google.com>
On Jul 18, 2013, at 12:29, Jonathan Nieder wrote:
Show 14 quoted lines
> (cc-ing Eric Wong, who maintains git-svn and knows both it and
> the libsvn perl bindings much better than I do)
> Kyle J. McKay wrote:
>
>> David Rothenberger <daveroth@acm.org> has determined the cause to
>> be that ra_serf does not drive the delta editor in a depth-first
>> manner [...]. Instead, the calls come in this order:
>
> Thanks.
>
> Sorry to nitpick, but the problem is not depth-first versus
> breadth-first versus random.  Blaming the traversal order makes this
> completely confusing.  The actual problem is that the driver asks us
> to keep multiple files open at a time.
On Sun, 07 Jul 2013 18:00:40 GMT, Branko Čibej wrote:
Show 31 quoted lines
> On 07.07.2013 19:40, Jonathan Nieder wrote:
>> (cc-ing subversion's users@ list for advice)
>> Kyle McKay wrote:
>>> On Jul 6, 2013, at 18:37, Jonathan Nieder wrote:
>>
>>>
>>>> Kyle McKay wrote:
>>>>> Begin forwarded message:
>>>>>> [2] http://subversion.tigris.org/issues/show_bug.cgi?id=2932
>>>>>
>>>> Ah, thanks for the context.
>>>>
>>>> It's still not clear to me how we know that ra_serf driving the  
>>>> editor
>>>> in a non depth-first manner is the problem here.  Has that  
>>>> explanation
>>>> been confirmed somehow?
>>> [...]
>>> Since ra_serf makes multiple connections to the server (hard-coded
>>> to 4 prior to svn 1.8, defaults to 4 in svn 1.8 but can be set to
>>> between 1 and 8) it makes sense there would be multiple active calls
>>> to apply_textdelta if processing is done as results are received on
>>> the multiple connections.
>> Ah, that's worrisome.  Do I understand you correctly that to work  
>> with
>> ra_serf in skelta mode, callers need to make their apply_textdelta
>> callback thread-safe?
>
> No; the editor drive is single-threaded, but the order of the  
> operations
> isn't strictly depth-first.

Brane also describes this as a non-depth-first traversal order which is the root of the problem. If the order of operations were strictly depth-first, the previous file would end up being closed before the next one's opened.

> The approach taken in this patch would be racy if the driver calls us
> multiple times concurrently (since temp_acquire can fail).  I believe
> it doesn't but haven't checked.

Brane says the editor drive is single-threaded so that doesn't seem like a problem.

Previous: Jonathan NiederNext: Eric Wong
Message 5 of 8 in “allow git-svn fetching to work using serf”
  1. 0/2 allow git-svn fetching to work using serfKyle J. McKay, Jul 18, 2013
  2. 1/2 Git.pm: add new temp_is_locked functionKyle J. McKay, Jul 18, 2013
  3. 2/2 git-svn: allow git-svn fetching to work using serfKyle J. McKay, Jul 18, 2013
  4. Jonathan NiederJul 18, 2013
  5. Kyle J. McKayJul 18, 2013
  6. Eric WongJul 18, 2013
  7. Junio C HamanoJul 18, 2013
  8. Kyle J. McKayJul 19, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.