Ben Collins-Sussman <sussman@collab.net> writes:
> Philip Martin <philip@codematters.co.uk> writes:
>
>> Now I'm using the attached patch, but it fails over ra_svn. Is the
>> client allowed to call abort_report after calling finsh_report? The
>> problem is that svnserve receives the abort_report when it is not
>> expecting it (at least it does when I add a flush call).
>
> Oops... the docs may not be clear, but I'm certain that when we
> designed the API, we meant abort_report() and finish_report() to be
> mutually exclusive ways of terminating the report procedure. It's not
> a surprise to me that any RA layer behaves this way.
>
> finish_report() is supposed to mean: "I'm completely done with the
> report." abort_report() is supposed to mean: "Never mind, I'm not
> going to finish this report-in-progress."
Was my original idea correct? Is svn_repos_finish_report responsible
for deleting the transactions if an error occurs driving the update
editor? Is the bug that this code in svn_repos_finish_report
/* Drive the update-editor. */
SVN_ERR (svn_repos_dir_delta (root1,
rbaton->base_path,
rbaton->target,
root2,
tgt_path,
rbaton->update_editor,
rbaton->update_edit_baton,
rbaton->text_deltas,
rbaton->recurse,
TRUE,
rbaton->ignore_ancestry,
rbaton->pool));
/* Still here? Great! Throw out the transactions. */
if (rbaton->txn)
SVN_ERR (svn_fs_abort_txn (rbaton->txn));
if (rbaton->txn2)
SVN_ERR (svn_fs_abort_txn (rbaton->txn2));
should always throw out the transactions even if svn_repos_dir_delta
fails?
--
Philip Martin
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Oct 12 17:02:25 2003