The branch, 1.2.40 has been created at 0a9484c20cb0d3cd58c0ffeabca81c7b9aeca12d (commit)
- Log ----------------------------------------------------------------- commit 0a9484c20cb0d3cd58c0ffeabca81c7b9aeca12d Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Mon Feb 6 09:22:37 2012 +1100 New version 1.2.40 commit a4888d22b56a149a323a7f1e50ddcb53a6fdd877 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Feb 1 09:32:02 2012 +1100 ReadOnly: update the loop test tool to print number of fetches per second commit f0274a3551ae984df8fb08d0c366e67e7ef6eb28 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Fri Oct 28 13:38:32 2011 +1100 libctdb: dont allow ctdb_writerecord() for readonly records commit 91f5dcc5699a9ea9052c8d3c3c619c1d90c0cd58 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Fri Oct 28 12:41:27 2011 +1100 ReadOnly: If record does not exist, upgrade to write-lock If we attempt a readonly lock request for a record that do not exist (yet) in the local TDB, then upgrade the request to ask for a write lock and force a request for migrate the record onto the local node. This allows the "only request record on second local request for known contended records" heuristics to try to avoid creating readonly delegations unless we have good reason to assume it is a contended record. commit 22e370afff7e1d236020071fa3d505c9fd3cfbd8 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Feb 1 10:26:41 2012 +1100 ReadOnly: add readonly record lock requests to libctdb Initial readonly record support in libctdb. New records are not yet created by the library but extising records will be This needs a bit more tests before we can drop the "old style" implementatio code in client/ctdb_client.c commit 2b07390620c16ba6515a37071bfc8c4e4b0d9ce9 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Fri Oct 28 11:44:19 2011 +1100 ReadOnly: fix bug writing incorrect amount of data in delegated record Fix bug when ctdbd updates the local copy of a delegated record to write the correct amount of data to the record. commit 97e6d4c0eb0acb8543cb870943a8145f7f9eb499 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Mon Oct 24 13:19:30 2011 +1100 ReadOnly DOCS: update the docs for readonly delegations to remove the passage that records are written/updated by the client commit c8ddb201ae1e399d45669d16be333aa9d744878c Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Mon Oct 24 13:14:26 2011 +1100 ReadOnly: Dont update the record header from the calling client. While it is convenient since it avoids having to create a child process from the main dameon for writing the updated record it makes the cleitn more complex. Remove the code in the example client code that writes the record to the local tdb. Add code to the local ctdbd processing of replies to check if this reply contain a ro delegation and if so, spawn a child process to lock the tdb and then write the data. commit d63dc590e329ed553a4436a6555d91ad3d9fb363 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Tue Sep 13 18:47:18 2011 +1000 ReadOnly: revokechild_active is a list, not a context. Dont reset the pointer to NULL after deleting the first entry, loop deleting one entry at a time until they are all gone or we will leak some memory and possibly a process. commit 70a7eebd580d1ff6d70528ec3890e9e9cc186ed5 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Tue Sep 13 18:41:34 2011 +1000 fix some compiler warnings for the test tools commit 44f142cb93690acba6df5ce303d6df85bd5ae6f8 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Tue Sep 13 18:38:20 2011 +1000 ReadOnly: Rename the function ctdb_ltdb_fetch_readonly() to ctdb_ltdb_fetch_with_header() since this is what it actually does. commit 459e3d7e26ec3cbbbdb7be7333c7e5ce70ea7f00 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Thu Sep 1 11:40:51 2011 +1000 ReadOnly: update the documentation about readonly locks commit 9cf194a24ce5f8544ee989f07a6179a372e40b1e Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Thu Sep 1 11:08:18 2011 +1000 ReadOnly: add a new control to activate readonly lock capability for a database. let all databases default to not support this until enabled through this control commit 96c4a06717a5792bf94b6c0c959117614a0e8b19 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Thu Sep 1 10:28:15 2011 +1000 ReadOnly: add a readonly flag to the getdbmap control and show the readonly setting in ctdb getdbmap output commit 33c305e37fae6f804a33df6de581e9c4e0838d1e Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Thu Sep 1 10:21:55 2011 +1000 ReadOnly: Change the ctdb_db structure to keep a uint8_t for flags instead of a boolean for the persistent flag. This is the same size as the original boolean but allows ut to add additional flags for the database commit 85281f60b6930a9b78fb864460db055d544d21df Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Tue Aug 23 10:41:52 2011 +1000 ReadOnly: Check the readonly flag instead of whether the tdb pointer is NULL or not commit 97205e83ef00ae73803cf310714cebb7807f425d Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Tue Aug 23 10:37:20 2011 +1000 ReadOnly: add description of readonly records commit b208c4e032d4b19c4920828be27c2771f63bfcc0 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Aug 17 16:14:57 2011 +1000 ReadOnly: clear out the tracking record once a revoke is completed commit fdbccb0b5000b88fb85e7a4148af8a230764934d Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Thu Jul 21 15:59:37 2011 +1000 ReadOnly: When the client wants a readwrite lock but the local node is the dmaster and also have delegations active we must send a CALL to the local daemon to trigger it to revoke the delegations commit 1a70dd3587affca2cc84c96d107d90093eee885c Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Thu Jul 21 15:58:56 2011 +1000 ReadOnly: Change the update_record test tool to use the new fetchlock routine that can do either normal or readonly fetchlock commit 385e1e087577b843b56b12f6ea8ab4ddc9520ff1 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 15:47:15 2011 +1000 ReadOnly: Add a test tool that requests a readonly delegation in a loop commit 613ddaf911746dff63f21df4bf4393443541aec3 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 15:43:55 2011 +1000 ReadOnly: Add a test tool to fetch a record, requesting a readonly delegation and lock the record once commit b149112cbade3d6cae614873c4e4c4119439e1ea Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 15:37:37 2011 +1000 ReadOnly: Add clientside code to fetch readonly records commit a6a601ba286f16527d90f695272b616c15003950 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 15:31:44 2011 +1000 ReadOnly: Add a ctdb_ltdb_fetch_readonly() helper function commit a7b633ed1c1755e1afea13bbf9b3891d32200de3 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 15:17:29 2011 +1000 ReadOnly: Add handlign of readonly requests readwrite requests, delegations and revoking of delegation to the processing loop for CALL requests coming in from a local client via domain socket commit 8e5d7609ec473059b3ae12f4e7ef911b4b1a2339 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 15:13:47 2011 +1000 ReadOnly: Add processing for ReadOnly delegation requests and revoke requests to the processing loop for CALL packets we receive from different nodes. This implements the ReadOnly and ReadWrite request processing, delegation and revoking of delegations for all requests coming in across the network from a remote node. commit bce124818f659d5cf14db953e23d0b47b59b6465 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 14:25:29 2011 +1000 ReadOnly: Once recovery has finished, make sure to free all revoke child processes and trigger the destructors for all deferred calls to re-queue the original packets to the input packet processing function commit b9ddacf2652eedd74b244b50666113de6a2f50fb Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 14:23:05 2011 +1000 ReadOnly: When releasing all deferred calls that blocked during revoke of all previous delegations, add a 1 second grace/delay for any new readonly delegation requests so that the read-write fetch-lock porcess has a chance to make progress commit 0ff8599518b6601e687d89e7e5413fd732d4d784 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 14:21:04 2011 +1000 ReadOnly: Add a new flag to call request packet to indicate that the client wants a readonly delegation commit c6b5c69e771d62189f196c2c6a9321d218da1546 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Tue Aug 23 10:27:31 2011 +1000 ReadOnly: Add a function to start a revoke of all delegations for a record. This triggers a child process to be created to perform the actual potentially blocking calls that are required. commit bc80b6f8575142b29e817c250d5a423d4b85e04d Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 13:49:17 2011 +1000 ReadOnly: Add functions to register CALLs to a context used to handle deferal of processing of CALL commands. Once the contexts are freed, the deferred calls are re-issued to the input packet processing functions again. This is needed when/if a CALL can not currently be processed by the main engine due to the record being locked down for revoking of all delegations. The data is passed through several layers of callbacks, and finally a timed event callback to ensure that the processing of the packet will be restarted again at the topmost eventloop, avoinding event loop nesting. commit e50db7a113109265ec52a8a30eb49284ef8b9048 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 13:30:12 2011 +1000 ReadOnly: Add an extra flag to ctdb_call_local to specify whether we want to write the record and header back to the tdb (for example we do when performing dmaster migrations) commit 791617f97546ad44f8ea6aaa042003d71106fa72 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 13:20:32 2011 +1000 ReadOnly: After recovering all databases, make sure to clear out the tracking database used to track delegations and revoke. This is because the recovery will implicitely result in a revoke of all delegations. commit bcc62671898a6de53d380c80ad2f37f19ae16ec3 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 13:15:48 2011 +1000 ReadOnly: Add "readonly" flag to the ctdb_db_context to indicate if this database supports readonly operations or not. Add a private lock-less tdb file to the ctdb_db_context to use for tracking delegarions for records Assume all databases will support readonly mode for now and se thte flag for all databases. At later stage we will add support to control on a per database level whether delegations will be supported or not. commit 970ef8981f4c139d4a4dbfcf97085911b438fa14 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 13:08:21 2011 +1000 ReadOnly: After performing a recovery, clear out all flags related to readonly delegations and revoke commit 486cc67ffd0406cc6b58f471fcc6cdf10b6e450b Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 12:30:33 2011 +1000 ReadOnly: Add a new command 'ctdb cattdb'. This fucntion differs from 'ctdb catdb' in that 'cattdb' will always traverse the local tdb file only, while 'catdb' does a cluster traverse. Since some record flags may differ between nodes in the cluster when read only delegations are in use, cattdb is needed when you need to know the exact flag settings on the current node itself. commit 48f8b76890e26c7adfd196a7df8c4ecd0ac685d7 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 12:21:33 2011 +1000 ReadOnly: Add printing of the record flags when we are traversing a database to print its content. commit 682d536d2f018b6f743781ada17544797e866dbf Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 12:17:27 2011 +1000 ReadOnly: Add 4 new record flags to handle read only delegation and revoking of delegations commit d3a11e9b36cb8f54dea1dac4453ad0e2225e270f Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 12:13:53 2011 +1000 ReadOnly: add a new test tool that does a fetchlock on a record, then bunps the RSN by 10 and writes the new content to the record as sprintf("%d", rsn) commit 807680f7a3a3f4a2e5199f8c1ccd972759dae456 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 12:06:37 2011 +1000 ReadOnly: Add clientside functions to send the UPDATE_RECORD control commit 6844863c5d73dd26a401f1e14c9e6df3891ea604 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 11:50:14 2011 +1000 ReadOnly: Add test tool to validate the functions to manipulate and enumerate the bitmap of nodes to where we have readonly delegations commit 61f82f7efe8ce6197f226fa4ed292ed63bc7af96 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 11:39:50 2011 +1000 ReadOnly: Add helper functions to manipulate a TDB_DATA as a bitmap for nodes that we are tracking as having a readonly delegation commit 26c464ae80405e5bd62dc4e3faa3909388d4ae49 Author: Ronnie Sahlberg <ronniesahlb...@gmail.com> Date: Wed Jul 20 11:27:05 2011 +1000 ReadOnly records: Add a new RPC function FETCH_WITH_HEADER. This function differs from the old FETCH in that this function will also fetch the record header and not just the record data commit 3ea1879864cf286c51b70efde6ee06b9cd9bcf2b Author: Martin Schwenke <mar...@meltin.net> Date: Tue Nov 1 20:52:57 2011 +1100 LCP IP allocation algorithm - try harder to find a candidate source node There's a bug in LCP2. Selecting the node with the highest imbalance doesn't always work. Some nodes can have a high imbalance metric because they have a lot of IPs. However, these nodes can be part of a group that is perfectly balanced. Nodes in another group with less IPs might actually be imbalanced. Instead of just trying the source node with the highest imbalance this tries them in descending order of imbalance until it finds one where an IP can be moved to another node. Signed-off-by: Martin Schwenke <mar...@meltin.net> commit f308b7027df9a6c35c845306ed7b72568ea6b81a Author: Martin Schwenke <mar...@meltin.net> Date: Tue Nov 1 19:49:38 2011 +1100 LCP IP allocation algorithm - new function lcp2_failback_candidate() There's a bug in LCP2. Selecting the node with the highest imbalance doesn't always work. Some nodes can have a high imbalance metric because they have a lot of IPs. However, these nodes can be part of a group that is perfectly balanced. Nodes in another group with less IPs might actually be imbalanced. Factor out the code from lcp2_failback() that actually takes a node and decides which address should be moved to which node. This is the first step in fixing the above bug. Signed-off-by: Martin Schwenke <mar...@meltin.net> ----------------------------------------------------------------------- -- CTDB repository