]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb-tools: Cancel transaction on error or if commit fails
authorAmitay Isaacs <amitay@gmail.com>
Fri, 5 Aug 2016 03:13:08 +0000 (13:13 +1000)
committerMartin Schwenke <martins@samba.org>
Mon, 8 Aug 2016 06:17:34 +0000 (08:17 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12122

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/tools/ctdb.c

index c4c0b4ea8a2ce953030fac5a4daae4d3a3dc1a0d..71e4ab5d86655ffed187602b0ea4f2dc934bc988 100644 (file)
@@ -5136,6 +5136,7 @@ static int control_pfetch(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
        if (ret != 0) {
                fprintf(stderr, "Failed to read record for key %s\n",
                        argv[1]);
+               ctdb_transaction_cancel(h);
                return ret;
        }
 
@@ -5200,6 +5201,7 @@ static int control_pstore(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
        if (ret != 0) {
                fprintf(stderr, "Failed to store record for key %s\n",
                        argv[1]);
+               ctdb_transaction_cancel(h);
                return ret;
        }
 
@@ -5207,6 +5209,7 @@ static int control_pstore(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
        if (ret != 0) {
                fprintf(stderr, "Failed to commit transaction on db %s\n",
                        db_name);
+               ctdb_transaction_cancel(h);
                return ret;
        }
 
@@ -5262,6 +5265,7 @@ static int control_pdelete(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
        if (ret != 0) {
                fprintf(stderr, "Failed to delete record for key %s\n",
                        argv[1]);
+               ctdb_transaction_cancel(h);
                return ret;
        }
 
@@ -5269,6 +5273,7 @@ static int control_pdelete(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
        if (ret != 0) {
                fprintf(stderr, "Failed to commit transaction on db %s\n",
                        db_name);
+               ctdb_transaction_cancel(h);
                return ret;
        }
 
@@ -5412,6 +5417,7 @@ static int control_ptrans(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
        if (ret != 0) {
                fprintf(stderr, "Failed to commit transaction on db %s\n",
                        db_name);
+               ctdb_transaction_cancel(h);
        }
 
 done: