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

issue 388

From: Ben Collins-Sussman <sussman_at_collab.net>
Date: 2001-06-11 23:29:39 CEST

Issue 388 is simple. If a commit fails part-way through, the
svn_error_t is thrown all the way back up to the client *without*
cleaning up the fs transaction.

(While we acknowledge that *some* orphaned fs transactions are
inevitable -- such as those from lost network connections -- this is a
case where we orphaned transaction is inevitable.)

Right now, here's the way commits work:

  client library:
      ra->open_session
      ra->get_commit_editor
      drive commit editor
      ra->close_session

The problem here is that the client needs to be able to tell the RA
layer to nuke the transaction if any error happens during the
editor-drive.

The Right way to do this, I think, is to add a new RA routine:

   svn_error_t *(*abort_commit) (session_baton, edit_baton);

It's not enough to put this routine on 'far' side of the RA interface;
errors might happen within the 'nearby' editor-driver, and the client
needs a way of telling the server that he's elegantly bailing out.

gstein, any objections to this? I can easily make this change happen
in ra_local. But for ra_dav, it probably means you'll need to send
some new DAV command over the wire. I can put a dummy func into
ra_dav for now.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:31 2006

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