Do not start a transaction this way.
authorSimo Sorce <idra@samba.org>
Thu, 22 Jan 2009 16:51:37 +0000 (11:51 -0500)
committerSimo Sorce <idra@samba.org>
Thu, 22 Jan 2009 16:54:51 +0000 (11:54 -0500)
Because we still want to commit any changes that successfully apply we
never want to do a global cancel, and because of how transaction nesting
works that means we never cancel any "transaction" at the single modify
operation level.

Let each operation start its own transaction so that the transaction is
properly canceled if any error is returned and half committed operations
(though plugins failing) are properly reverted on a per operation basis.

source4/lib/ldb/tools/ldbmodify.c

index d73937cea42f6eeb65003c698d2c0eabded1e703..6e355a10cf5e11af091d5544eb23e5a789c0f25d 100644 (file)
@@ -93,11 +93,6 @@ int main(int argc, const char **argv)
 
        options = ldb_cmdline_process(ldb, argc, argv, usage);
 
-       if (ldb_transaction_start(ldb) != 0) {
-               printf("Failed to start transaction: %s\n", ldb_errstring(ldb));
-               exit(1);
-       }
-
        if (options->argc == 0) {
                ret = process_file(ldb, stdin, &count);
        } else {
@@ -113,11 +108,6 @@ int main(int argc, const char **argv)
                }
        }
 
-       if (count != 0 && ldb_transaction_commit(ldb) != 0) {
-               printf("Failed to commit transaction: %s\n", ldb_errstring(ldb));
-               exit(1);
-       }
-
        talloc_free(ldb);
 
        printf("Modified %d records with %d failures\n", count, failures);