repo: don't forget to abort the transaction when failed

ostree_repo_prepare_transaction() should always be matched with a call
to either ostree_repo_commit_transaction() or
ostree_repo_abort_transaction().

Since ostree_repo_pull_with_options() does not call
ostree_repo_abort_transaction() on errors, the OstreeRepo instance will
hit an assertion when it's re-used later for another attempt, such as
when the update is driven by an external component through libostree and
network temporarily goes down.

This commit simply always calls ostree_repo_abort_transaction() in the
exit path of ostree_repo_pull_with_options(), since the function is safe
to call even when we're not in a transaction, and that matches e.g. what
ostree-sysroot-cleanup.c does.
This commit is contained in:
Cosimo Cecchi 2015-07-27 17:17:26 -07:00 committed by Colin Walters
parent 939a7aebfb
commit a5f266f25d
1 changed files with 1 additions and 0 deletions

View File

@ -2191,6 +2191,7 @@ ostree_repo_pull_with_options (OstreeRepo *self,
ret = TRUE;
out:
ostree_repo_abort_transaction (pull_data->repo, cancellable, NULL);
g_main_context_unref (pull_data->main_context);
if (update_timeout)
g_source_destroy (update_timeout);