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

Re: [BUG] Subversion client reports false failure

From: <kfogel_at_collab.net>
Date: 2005-11-26 20:12:35 CET

"Hyrum K. Wright" <hyrum_wright@byu.edu> writes:
> I recently encountered a situation where the subversion client reported
> a failure of a commit, even though the commit was successfully recorded
> by the server. This would appear to be a bug, so I'm reporting it here.
>
> I was working over a flaky wireless connection, and the connect dropped
> during the 'Transmitting file data' portion of the commit. After
> waiting for quite some time, the client returned an error saying the
> commit had failed.
>
> Meanwhile, I was using some independent tools (in this case, Trac) on
> the server, and it noted that the commit had succeeded. Sure enough,
> when I ran an update, the changes were pulled down from the server and
> merged into my working copy. Running a diff verified that the changes
> pulled down were indeed my changes.
>
> This may be a rarely encountered race condition, or simply a consequence
> of my connect dropping at the right moment. I'm not familiar enough
> with the code in question to make that determination.
>
> A complete transcript of the session is recorded below. I'm running the
> latest from trunk, with maintainer mode enabled, connecting to a remote
> repository over https.

We'll unavoidably have a small window during which the commit can have
succeeded but the client doesn't yet know about it. Any protocol to
eliminate such a window entirely would involve more client<->server
interdependency than we want, IMHO.

In fact, unless there's some really clever idea I've never heard of,
it's impossible to eliminate the window; all we could do is make the
client spin into a confirmation-retry loop instead of erroring. That
would be a better user experience, as long as there's a time limit on
the loop, I guess, but I'm not sure the extra complexity is worth it.

I don't know that our window is as small as it could be, but I think
it's at least close. So my feeling is, this is not a bug unless
someone encounters it repeatedly; if that happens, then we should try
to find out why the communication is dropping.

-Karl

-- 
www.collab.net  <>  CollabNet  |  Distributed Development On Demand
> -Hyrum
> 
> -------------------8<---------------------------
> [hkw2@localhost firmware]$ svn st
> ?      phase1/phase1.s
> ?      phase1/phase1.hex
> ?      phase1/main.s
> ?      phase1/phase1.ee.hex
> M      include/aros_internal.h
> M      include/aros.h
> M      aros/aros.c
> [hkw2@localhost firmware]$ svn diff | less
> [hkw2@localhost firmware]$ svn ci
> Sending        firmware/aros/aros.c
> Sending        firmware/include/aros.h
> Sending        firmware/include/aros_internal.h
> Transmitting file data ...subversion/libsvn_client/commit.c:862:
> (apr_err=175002)
> svn: Commit failed (details follow):
> subversion/libsvn_ra_dav/util.c:296: (apr_err=175002)
> svn: DELETE of '/svn/!svn/act/e450d46d-7c06-0410-a417-e00e3ce1467e': SSL
> negotiation failed: SSL error: (null) (https://rocket.brucec.net)
> subversion/clients/cmdline/util.c:417: (apr_err=175002)
> svn: Your commit message was left in a temporary file:
> subversion/clients/cmdline/util.c:417: (apr_err=175002)
> svn:    '/home/hkw2/school/rocket/avionics/svn-commit.2.tmp'
> [hkw2@localhost firmware]$ svn st
> ?      phase1/phase1.s
> ?      phase1/phase1.hex
> ?      phase1/main.s
> ?      phase1/phase1.ee.hex
> M      include/aros_internal.h
> M      include/aros.h
> M      aros/aros.c
> [hkw2@localhost firmware]$ svn up
> subversion/libsvn_ra_dav/util.c:827: (apr_err=175002)
> svn: PROPFIND request failed on '/svn/avionics/firmware'
> subversion/libsvn_ra_dav/util.c:296: (apr_err=175002)
> svn: PROPFIND of '/svn/avionics/firmware': Could not resolve hostname
> `rocket.brucec.net': Host not found (https://rocket.brucec.net)
> [hkw2@localhost firmware]$ svn up
> G    include/aros_internal.h
> G    include/aros.h
> G    aros/aros.c
> Updated to revision 40.
> [hkw2@localhost firmware]$ svn diff
> [hkw2@localhost firmware]$ svn st
> ?      phase1/phase1.s
> ?      phase1/phase1.hex
> ?      phase1/main.s
> ?      phase1/phase1.ee.hex
> [hkw2@localhost firmware]$
> ------------------------8<-----------------
> 
-- 
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Nov 26 21:35:45 2005

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