diff options
author | Michael Adam <obnox@samba.org> | 2010-01-13 23:53:54 +0100 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2010-04-01 09:39:15 +0200 |
commit | 777a4d7e7818155c13ed733a94472e8a6bc369b9 (patch) | |
tree | 1724235b03b98e41784d711c679c2a5208a21f18 /source3/lib | |
parent | 1747d23a5525c2a4e8060bff737ef7dd79678a0b (diff) | |
download | samba-777a4d7e7818155c13ed733a94472e8a6bc369b9.tar.gz |
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
(cherry picked from commit c311697aded87ce624d40cbf14e05d6e6377c257)
(cherry picked from commit 6f325fb6b092da554180218d1cbb42181f90bbfa)
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/dbwrap_ctdb.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/source3/lib/dbwrap_ctdb.c b/source3/lib/dbwrap_ctdb.c index c0b5fd51ed5..79c4c0ce420 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, |