On Fri, 2009-01-23 at 19:44 +0100, Stefan (metze) Metzmacher wrote:
Hi Simo,
Do not start a transaction this way.
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.
Who says that? I think it's quite useful to only apply all operations!
We should at least have a command line option to control this.
And also have all ldb tools in sync with this behavior.
Could you please revert that for now.
Nope, the previous behavior leaves the database in an inconsistent state
if an operation that should modify multiple entries based on a
triggering modify fails.
The reason is that if a module returns an error the transaction is not
canceled. (Tested with a module I am writing)
The intended behavior of ldbmodify was to apply all mods that could be
successfully applied, but it did not do that correctly.
My change fixes a real problem.
If you want to modify the intended behavior I am ok, but the code right
now works correctly. Reverting will make it wrong.
Then we could readd this to all
tools with an option. Where I don't care what default behavior we choose.
Unless my change is causing problems I think a revert would be worng,
you can still add an option to have a real global transaction without
any revert.
Simo.
--
Simo Sorce
Samba Team GPL Compliance Officer s...@samba.org
Principal Software Engineer at Red Hat, Inc. s...@redhat.com