The branch, trans3 has been created at 3d2d877d877146ca09a28a3a44f4840eb36fd377 (commit)
- Log ----------------------------------------------------------------- commit 3d2d877d877146ca09a28a3a44f4840eb36fd377 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Tue Dec 15 14:26:28 2009 +1100 Revert "Make fetch_locked more scalable" This reverts commit 5736e17c139c9a8049e235429aeae0c6c9d0e93d. commit ac06a0e042e7d024060d6e87a49bda9ccc072c52 Merge: ea9e39369379939abf6a4076fa2014c10c1a9ad0 c5a0aef668a63f927d6184612b13ce316eb4a0be Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Tue Dec 15 14:25:55 2009 +1100 Merge commit 'obnox/ctdb-wip-trans3' into trans3 commit c5a0aef668a63f927d6184612b13ce316eb4a0be Author: Michael Adam <ob...@samba.org> Date: Fri Dec 11 17:05:30 2009 +0100 Revert "recovery: add special pull-logic for persistent databases" This reverts commit 8aef46d2aab3efb322dda51eaa202653cefd5222. This special recovery logic is wrong now with the transaction rewrite. The treatment of persistent databases will later be rewritten to use the database sequence number. Michael commit 5736e17c139c9a8049e235429aeae0c6c9d0e93d Author: Volker Lendecke <v...@samba.org> Date: Wed Dec 9 15:11:45 2009 +0100 Make fetch_locked more scalable This patch improves the handling of the fetch_lock operation on non-persistent databases that ctdb clients have to do very frequently. The normal flow how this goes is the following: 1. Client does a local fetch_lock on the database 2. Client looks if the local node is dmaster. If yes, everything is fine If no, continue here 3. Client unlocks the local record 4. Client issues a "get me the record" call to ctdbd 5. ctdbd goes out and fetches the dmaster role 6. ctdbd tells the client to retry 7. Client starts over again The problem is between step 6 and 7: Before the client has had the chance to retry (i.e. catch the record with a fetch_locked), another node might have come asking ctdbd to migrate away the record again. This is a real problem, I've seen >20 loops of this kind in real workloads. This patch does the following: Whenever ctdb receives a record as result of step 5, it puts the key on a "holdback list". As long as a key is on this list, a request to migrate away the dmaster is put on hold. It is the client's duty to issue the "CTDB_CONTROL_GOTIT" control when it has successfully done step 2 after having asked ctdb to fetch the record. This will release the key from the "holdback list" and re-issue all dmaster migration requests. As a safeguard against malicious clients, once a second (default 1000msecs, tunable "HoldbackCleanupInterval" in milliseconds) ctdbd goes over the list of held back keys, deletes them and releases all held back migration requests. commit 844aa6300ee4d87561e698001ebc15ac1e455528 Author: Volker Lendecke <v...@samba.org> Date: Thu Dec 10 13:02:29 2009 +0100 Import "talloc_array_length" from upstream talloc commit 78ca29352aa39f4ef4e41096b92d55cb2e0d348a Author: Michael Adam <ob...@samba.org> Date: Fri Dec 11 16:39:58 2009 +0100 tests: temporarily disable the transaction test tool. Make it return success for make test. This is temporarily disabled until the rewrite of the transaction code (in samba and the daemon) using the global lock feature has been ported to the ctdb client code. Michael commit a7e3b5fac6b3f5d74473f26eb86c067b35647996 Author: Michael Adam <ob...@samba.org> Date: Fri Dec 11 15:31:02 2009 +0100 Add a new control CTDB_GET_DB_SEQNUM - fetch a persistent db's sequence number. Michael commit 4b1dbcf0853bdc4832d39a477823ae34f216da52 Author: Michael Adam <ob...@samba.org> Date: Fri Dec 11 14:19:55 2009 +0100 define CTDB_DB_SEQNUM_KEY - used with the new implementation of transactions. Michael commit 1640da1cab7e8b545367824204c82931f3346848 Author: Volker Lendecke <v...@samba.org> Date: Wed Dec 9 17:20:23 2009 +0100 Tiny simplification of ctdb_queue_packet() commit 6af5e74a21546d723008d69d6752ebebf898c947 Author: Volker Lendecke <v...@samba.org> Date: Tue Dec 8 17:00:55 2009 +0100 Rename a struct member for clarity commit f66428f9d2013080a414404c1ba6117888352fd6 Author: Michael Adam <ob...@samba.org> Date: Thu Dec 3 17:59:49 2009 +0100 server: add a new control CTDB_CONTROL_TRANS3_COMMIT This is a simplified version of the trans2 commit control: It just rolls out the marshall buffer to all active nodes. It is the main ctdbd part of the re-implementation of the persistent transactions. The client code is changed to take a global lock to start a transactions and store into the marshal buffer instead of writing to the local tdb under a local transaction. The old transaction implementation is going to be removed in a later commit. Michael ----------------------------------------------------------------------- -- CTDB repository