[ostree] core: Ensure we abort transaction if we fail in the middle
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] core: Ensure we abort transaction if we fail in the middle
- Date: Sat, 7 Jan 2012 16:49:16 +0000 (UTC)
commit 788dfe89e1aae7f1958606d8af109652d53692f5
Author: Colin Walters <walters verbum org>
Date: Sat Jan 7 11:11:51 2012 -0500
core: Ensure we abort transaction if we fail in the middle
Otherwise we could leave a lot of temp files lying around.
src/ostree/ot-builtin-commit.c | 11 +++++++++++
src/ostree/ot-builtin-compose.c | 12 ++++++++++++
2 files changed, 23 insertions(+), 0 deletions(-)
---
diff --git a/src/ostree/ot-builtin-commit.c b/src/ostree/ot-builtin-commit.c
index 8b79118..be58f19 100644
--- a/src/ostree/ot-builtin-commit.c
+++ b/src/ostree/ot-builtin-commit.c
@@ -81,6 +81,7 @@ ostree_builtin_commit (int argc, char **argv, GFile *repo_path, GError **error)
GVariantBuilder metadata_builder;
gboolean metadata_builder_initialized = FALSE;
gboolean skip_commit = FALSE;
+ gboolean in_transaction = FALSE;
context = g_option_context_new ("[ARG] - Commit a new revision");
g_option_context_add_main_entries (context, options, NULL);
@@ -180,6 +181,8 @@ ostree_builtin_commit (int argc, char **argv, GFile *repo_path, GError **error)
if (!ostree_repo_prepare_transaction (repo, cancellable, error))
goto out;
+ in_transaction = TRUE;
+
mtree = ostree_mutable_tree_new ();
if (argc == 1 && (trees == NULL || trees[0] == NULL))
@@ -282,6 +285,8 @@ ostree_builtin_commit (int argc, char **argv, GFile *repo_path, GError **error)
if (!ostree_repo_commit_transaction (repo, cancellable, error))
goto out;
+
+ in_transaction = FALSE;
if (!ostree_repo_write_ref (repo, NULL, branch, commit_checksum, error))
goto out;
@@ -293,11 +298,17 @@ ostree_builtin_commit (int argc, char **argv, GFile *repo_path, GError **error)
if (!ostree_repo_abort_transaction (repo, cancellable, error))
goto out;
+ in_transaction = FALSE;
+
g_print ("%s\n", parent);
}
ret = TRUE;
out:
+ if (in_transaction)
+ {
+ (void) ostree_repo_abort_transaction (repo, cancellable, NULL);
+ }
if (metadata_builder_initialized)
g_variant_builder_clear (&metadata_builder);
g_clear_object (&arg);
diff --git a/src/ostree/ot-builtin-compose.c b/src/ostree/ot-builtin-compose.c
index 15e1bb8..3fc18b3 100644
--- a/src/ostree/ot-builtin-compose.c
+++ b/src/ostree/ot-builtin-compose.c
@@ -94,6 +94,7 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
GFile *metadata_f = NULL;
OstreeMutableTree *mtree = NULL;
gboolean skip_commit = FALSE;
+ gboolean in_transaction = FALSE;
int i;
context = g_option_context_new ("BRANCH1 BRANCH2 ... - Merge multiple commits into a single commit tree");
@@ -136,6 +137,8 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
if (!ostree_repo_prepare_transaction (repo, cancellable, error))
goto out;
+ in_transaction = TRUE;
+
mtree = ostree_mutable_tree_new ();
if (recompose)
@@ -224,6 +227,8 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
if (!ostree_repo_commit_transaction (repo, cancellable, error))
goto out;
+ in_transaction = FALSE;
+
if (!ostree_repo_write_ref (repo, NULL, branch, commit_checksum, error))
goto out;
}
@@ -231,6 +236,8 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
{
if (!ostree_repo_abort_transaction (repo, cancellable, error))
goto out;
+
+ in_transaction = FALSE;
g_print ("%s\n", parent);
}
@@ -238,6 +245,11 @@ ostree_builtin_compose (int argc, char **argv, GFile *repo_path, GError **error)
ret = TRUE;
g_print ("%s\n", commit_checksum);
out:
+ if (in_transaction)
+ {
+ (void) ostree_repo_abort_transaction (repo, cancellable, NULL);
+ }
+
if (compose_metadata_builder_initialized)
g_variant_builder_clear (&compose_metadata_builder);
if (commit_metadata_builder_initialized)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]