summaryrefslogtreecommitdiff
path: root/source3/lib
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2010-01-13 23:53:54 +0100
committerKarolin Seeger <kseeger@samba.org>2010-04-01 09:39:15 +0200
commit777a4d7e7818155c13ed733a94472e8a6bc369b9 (patch)
tree1724235b03b98e41784d711c679c2a5208a21f18 /source3/lib
parent1747d23a5525c2a4e8060bff737ef7dd79678a0b (diff)
downloadsamba-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.c14
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,