The branch, v3-4-ctdb has been updated
       via  85755eae6161111f1efaa95719d5c893c801e5de (commit)
       via  af5e8f691c9dbe0da9a30ee413bff40bd689452e (commit)
      from  b2e840b111b43736d14d359e89ee8a17487531f5 (commit)

http://gitweb.samba.org/?p=obnox/samba-ctdb.git;a=shortlog;h=v3-4-ctdb


- Log -----------------------------------------------------------------
commit 85755eae6161111f1efaa95719d5c893c801e5de
Author: Michael Adam <[email protected]>
Date:   Wed Jan 13 23:53:54 2010 +0100

    s3:dbwrap_ctdb: exit early when nothing has been written in 
transaction_commit.
    
    This skips update of the __db_sequence_number__ record when nothing else has
    been written. There are transactions that are just openend and then nothing
    is written until transaction_commit is called. This is for instance the case
    with registry initialization routines: They start a transaction and only
    write somthing when the registry has not been initialized yet.
    So this change will skip many db_seqnum bumps and TRANS3_COMMIT roundtrips.
    
    Michael

commit af5e8f691c9dbe0da9a30ee413bff40bd689452e
Author: Michael Adam <[email protected]>
Date:   Wed Jan 13 23:51:34 2010 +0100

    s3:dbwrap_ctdb: fix brown paperbag bug in ctdb_transaction_commit.
    
    I carefully prepared the return value only to "return 0;" at the bottom. :-(
    This may well have hit us for instance in the nested cancel case
    and produced random errors.
    
    Michael

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/dbwrap_ctdb.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/dbwrap_ctdb.c b/source3/lib/dbwrap_ctdb.c
index 4e97d26..79c4c0c 100644
--- a/source3/lib/dbwrap_ctdb.c
+++ b/source3/lib/dbwrap_ctdb.c
@@ -763,6 +763,15 @@ static int db_ctdb_transaction_commit(struct db_context 
*db)
                return 0;
        }
 
+       if (h->m_write == NULL) {
+               /*
+                * No changes were made, so don't change the seqnum,
+                * don't push to other node, just exit with success.
+                */
+               ret = 0;
+               goto done;
+       }
+
        DEBUG(5,(__location__ " Commit transaction on db 0x%08x\n", 
ctx->db_id));
 
        /*
@@ -790,11 +799,6 @@ static int db_ctdb_transaction_commit(struct db_context 
*db)
        }
 
 again:
-       if (h->m_write == NULL) {
-               /* no changes were made, potentially after a retry */
-               goto done;
-       }
-
        /* tell ctdbd to commit to the other nodes */
        rets = ctdbd_control_local(messaging_ctdbd_connection(),
                                   CTDB_CONTROL_TRANS3_COMMIT,
@@ -840,7 +844,7 @@ again:
 done:
        h->ctx->transaction = NULL;
        talloc_free(h);
-       return 0;
+       return ret;
 }
 
 


-- 
SAMBA-CTDB repository

Reply via email to