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



commit a5f266f25dfbab200472e15202830e1b9dccf999
Author: Cosimo Cecchi <cosimo endlessm com>
Date:   Mon Jul 27 17:17:26 2015 -0700

    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.

 src/libostree/ostree-repo-pull.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
---
diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c
index aa8e635..5a87847 100644
--- a/src/libostree/ostree-repo-pull.c
+++ b/src/libostree/ostree-repo-pull.c
@@ -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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]