The annotated tag, ctdb-1.2.45 has been created at 0f0cec3f3b87917f13ffe79b7c95b1f3e4ad5f56 (tag) tagging 95efb0cffb19a4311d706b2fd7031834a2711022 (commit) replaces ctdb-1.9.1 tagged by Martin Schwenke on Thu Jul 12 14:06:47 2012 +1000
- Log ----------------------------------------------------------------- CTDB release 1.2.45 Andrew Tridgell (1): tdb: added TDB_NO_FSYNC env variable Chandra Seetharaman (1): make changes to ctdb event scripts to support NFS-Ganesha. Christian Ambach (1): improve timing issue detections David Disseldorp (1): io: Make queue_io_read() safe for reentry Evan Kinney (1): ctdb: Fixed use of reserved word "private" in typedefs Gregor Beck (4): ctdb catdb: fix escaping of '"' and '\' add ltdbtool - a standalone ltdb tool ltdbtool: add manpage ltdbtool: add manpage html + roff Günther Deschner (1): lib/tdb: fix c++ build warning in tdb_header_hash(). Harald Klatte (1): AIX bind wants the correct addrsize Jelmer Vernooij (3): pytdb: Make filename argument optional. pytdb: Include Python.h first to prevent warning. pytdb: Add __version__ attribute. Kirill Smelkov (9): pytdb: Add support for tdb_add_flags() & tdb_remove_flags() pytdb: Fix repr segfault for internal db pytdb: Update open flags to match those for tdb_open() in tdb.h pytdb: Add support for tdb_enable_seqnum, tdb_get_seqnum and tdb_increment_seqnum_nonblock pytdb: Add support for tdb_transaction_prepare_commit() pytdb: Add support for tdb_freelist_size() pytdb: Add TDB_INCOMPATIBLE_HASH open flag pytdb: Add support for tdb_repack() pytdb: Check errors after PyObject_New() calls Martin Schwenke (103): Test suite: handle change to disconnected node error message. Test suite: handle extra lines in statistics output. Optimise 61.nfstickle to write the tickles more efficiently. Testing: Add Python IP allocation simulation. Test suite: handle change to disconnected node error message. Test suite: handle extra lines in statistics output. Optimise 61.nfstickle to write the tickles more efficiently. Testing: Add Python IP allocation simulation. Merge branch 'master' of git://git.samba.org/sahlberg/ctdb Testing: Add imbalance information to IP allocation simulation. Testing: In IP allocation simulation count total number of events. Testing: IP allocation simulation prints final imbalance in statistics. Testing: IP allocation simulation - save some warnings for verbose mode. Testing: IP allocation simulation - add command line option for random seed. Testing: IP allocation simulation - update copyright message. Testing: IP allocation simulation - Tweak options handling and Cluster.diff(). Testing: IP allocation simulation - fix nondeterminism in do_something_random(). Testing: IP allocation simulation - Update README. Testing: IP allocation simulation - update options processing in examples. Testing: IP allocation simulation - add general node group example. Testing: IP allocation simulation - rename an example to node_group_simple.py. Testing: IP allocation simulation - rename an example to node_group_extra.py. Testing: IP allocation simulation - make usage/failure more obvious. Testing: IP allocation simulation - improve help for options. Testing: IP allocation simulation - print maximum number of unhealthy nodes. Testing: IP allocation simulation - clean up usage message. Testing: IP allocation simulation - add option to change odds of a failure. Test suite - try to make addip test more reliable and add some debugging. Merge remote branch 'martins/master' Test suite - fix addip test. Test suite: remove thaw/freeze tests. Test suite - make the ctdb_fetch test cope with "Reqid wrap!" messages. initscript: wait until we can ping ctdbd before setting tunables. Test suite: weaken ctdb continue/enable tests for non-deterministic IPs. Test suite: Fix typo in continue test. Test suite: remove unnecessary verbosity from enable/continue tests. Add some command-line options to ctdb_diagnostics. Test suite: make addip test use $CTDB rather than ctdb in debug code. Test suite: improve wait_until_node_has_status() Test suite: use $CTDB rather than ctdb everywhere in ctdb_test_functions.sh. Test suite: strengthen function _cluster_is_healthy(). Test suite: print date/time at test completion. Test suite: Add more timestamping of debugging information. Test suite: loosen the getmonmode test. Move NAT gateway firewall rules to recovered|updatenatgw events. Merge branch 'master' of git://git.samba.org/sahlberg/ctdb Merge branch 'master' of git://git.samba.org/sahlberg/ctdb Test suite: in the test eventscript, run "ctdb" not "$CTDB". NFS tickles: use addtickle/deltickle instead of shared tickle directory. Test suite: NFS tickle test uses gettickles if events.d/61.nfstickle missing. Test suite: Fix typos in NFS tickle test. Test suite: Tweak NFS tickle test. Test suite: Fix NFS tickle test. Test suite: Make NFS tickle test more flexible. Test suite: make statistics test cope with changes to statistics output. Test suite: match changed output for ctdb ping to disconnected node. Test suite: fix typo in ctdb ping test grep pattern. 60.nfs only fails or warns after 10 consecutive nfsd/statd failures. Make a time comparison in 60.nfs eventscript more readable. Eventscripts: make loadconfig() function hookable by the test suite. 50.samba eventscript should stop/start services when they become (un)managed. Eventscript functions - catch failures in ctdb_service_start(). 60.nfs eventscript should do nothing if NFS isn't managed by CTDB. Eventscripts: work around NFS restart failure under load. Eventscripts: print a message when reconfiguring a service. Eventscripts: only autostart during a monitor event. Eventscripts: use "startstop_nfs restart" to reconfigure NFS. Eventscripts: lower the fail/restart limits for nfsd. onnode - Fix long standing bug in onnode healthy/ok/connected/con. onnode: Be defensive when listing IPs of nodes with designated status. onnode: Exit with error for unknown command-line flags. onnode: Future-proof get_nodes_with_status(). onnode: Remove an unnecessary comment. onnode: fix get_nodes_with_status() onnode: fix natgwlist nodespec Eventscript functions: optimise ctdb_check_tcp_ports() and add debug. IP allocation - add LCP2 algorithm. Tests: Initial test code for LCP2 IP allocation algorithm. Eventscripts - 10.interfaces should not check orphaned interfaces. Eventscripts - weaken TCP port check message if CTDB has just been started. Eventscripts: New configuration variable CTDB_SERVICE_AUTOSTARTSTOP. Eventscripts - generalise TCP port checking plus new nmap-based checker Eventscripts - new default TCP port checker using "ctdb checktcpport" Eventscripts - fix debugging buglet in ctdb_check_tcp_ports_ctdb() Eventscripts - ctdb_check_tcp_ports() bug fix. Make ctdb_diagnostics more resilient to uncontactable nodes. Eventscripts: Work around 50.samba autostop failure LCP IP allocation algorithm - new function lcp2_failback_candidate() LCP IP allocation algorithm - try harder to find a candidate source node Eventscripts - redesign and rewrite 13.per_ip_routing Eventscript functions - remove functions only used by 13.per_ip_routing Eventscripts - new function ctdb_check_args() Eventscripts - 13.per_ip_routing should use dirname not basename for mkdir Eventscripts - use set_proc() rather than accessing /proc directly Eventscripts - make 13.per_ip_routing try harder to find public_addresses Eventscripts - make 13.per_ip_routing fail gracefully if config is missing Eventscripts - Fix typo in 13.per_ip_routing support for __auto_link_local__ Eventscripts: fix basename -> dirname typo eventscripts: Print a warning on failure to delete a routing rule eventscripts: 13.per_ip_routing should remove bogus routes on ipreallocated eventscripts: 13.per_ip_routing - readability improvement eventscripts: 13.per_ip_routing - flock should have a timeout New version 1.2.45 Michael Adam (87): server: when we migrate off a record with data, set the MIGRATED_WITH_DATA flag persistent_callback: ignore the update-recordreturn code of remote node in recovery persistent_store_timout: do not really time out the trans3_commit control in recovery persistent: if a node failed to update_record, trigger a recovery persistent: reduce indentation for the finishing moves in ctdb_persistent_callback persistent_callback: print "no error message given" instead of "(null)" persistent: add a ctdb_persistent_state member to the ctdb_db context. persistent: add a ctdb_db context to the ctdb_persistent_state struct. persistent: allocate the persistent state in the ctdb_db struct in trans3_commit persistent: reject trans3_control when a commit is already active. persistent: add a client context to the persistent_stat and track the db_id daemon: correctly end a running trans3_commit if the client disconnects. persistent: add ctdb_persistent_finish_trans3_commits(). recover: finish pending trans3 commits when a recovery is finished. New version 1.2.22. gitignore: add vi swap files gitignore: add tags file tests: fix segfault in randrec test when connection to daemon fails. tests: fix segfault in fetch test when connection to ctdb failed. tests: fix segfault in fetch_one test when connection to ctdbd fails tests: fix segfault in store test when connection to ctdbd failed. Fix typos in a comment in vacuum_traverse. vacuum: in ctdb_vacuum_db, fix the length of the array of vacuum fetch lists vacuum: correctly send TRY_DELETE_RECORDS ctrl to all active nodes vacuum: reduce indentation of the loop sending VACUUM_FETCH controls vacuum: check lmaster against num_nodes instead of vnn_map->size server: when we migrate off a record with data, set the MIGRATED_WITH_DATA flag recoverd: in a recovery, set the MIGRATED_WITH_DATA flag on all records call: add new call flag CTDB_CALL_FLAG_VACUUM_MIGRATION call: Move definition of call flags down to the definition of the flags field. add a new record flag CTDB_REC_FLAG_VACUUM_MIGRATED. server: in the VACUUM_FETCH handler, add the VACUUM_MIGRAION to the call flags call: transfer the record flags in the ctdb call packets. call: hand the submitted record_flags to local record storage function. call: becoming dmaster in VACUUM_MIGRATION, set the VACUUM_MIGRATED record flag Add a delete_queue to the ctdb database context struct. When attaching to a non-persistent DB, initialize the delete_queue. vaccum: clear the fast-path vacuuming delete_queue after creating the vacuuming child. When wiping a database, clear the delete_queue. server: rename ctdb_repack_db() to ctdb_vacuum_and_repack_db() vacuum: refactor new add_record_to_vacuum_fetch_list() out of vacuum_traverse(). vacuum: skip adding records to list of records to send to lmaster on lmaster vacuum: refactor new add_record_to_delete_tree() out of vacuum_traverse(). vacuum: reduce indentation in add_record_to_delete_tree() vacuum: add delete_queue_traverse() for traversal of the delete_queue. vacuum: traverse the delete_queue befor traversing the database. Add a tunable VacuumFastPathCount. vacuum: add a fast_path_count to the vacuum_handle. vacuum: bump the number of fast-path runs in the vacuum child destructor vacuum: reset the fast path count in the event handle if it exceeds the limit. vacuum: Only run full vacuumig (db traverse) every VacuumFastPathCount times. vacuum: disable full db-traverse vacuuming runs when VacuumFastPathCount == 0 vacuum: change all Vacuum*Interval tunables to default to 10 vacuum: refactor insert_delete_record_data_into_tree() out of add_record_to_delete_tree() vacuum: add statistics output to the fast and full traverse runs. vacuum: lower level of hash collision debug message to INFO control: add macro CHECK_CONTROL_MIN_DATA_SIZE. control: add a new control opcode CTDB_CONTROL_SCHEDULE_FOR_DELETION server: implement a new control SCHEDULE_FOR_DELETION to fill the delete_queue. vacuum: add ctdb_local_schedule_for_deletion() client: add accessor function ctdb_header_from_record_handle(). test: send SCHEDULE_FOR_DELETION control from randrec test. daemon: fill ctdb->ctdbd_pid early server: create a server variant ctdb_ltdb_store_server() of ctdb_ltdb_store(). server: Use the ctdb_ltdb_store_server() in the ctdb daemon for non-persistent dbs ctdb_ltdb_store_server: delete an empty record that is safe to delete instead of storing locally. ctdb_ltdb_store_server: implement fastpath vacuuming deletion based on VACUUM_MIGRATED flag. ctdb_ltdb_store_server: always store the data when ctdb_ltdb_store() is called from the client ctdb_ltdb_store_server: Improve debug message in ctdb_ltdb_store when store or delete fails. ctdb_ltdb_store_server: add ability to send SCHEDULE_FOR_DELETION control to ctdb_ltdb_store. ctdb_private.h: add record flag CTDB_REC_FLAG_AUTOMATIC ltdb: add the CTDB_REC_FLAG_AUTOMATIC to the initial header in ctdb_ltdb_fetch() ctdb_ltdb_store_server: honour the AUTOMATIC record flag server: add a comment explaining the call redirect logic in ctdb_call_send_redirect(). vacuum: raise a debug level from INFO to DEBUG vacuum: refactor insert_record_into_delete_queue out of ctdb_control_schedule_for_deletion vacuum: use insert_record_into_delete_queue in ctdb_local_schedule_for_deletion. vacuum: fix a comment typo New version 1.2.24. ctdb.init: check for availability of "tdbtool check" and "tdbdump" ctdb.init: print a warning when tdbdump is found but tdbtoo or "tdbtool check" is not available packaging: remove the dependency to tdbtool and tdbdump from the spec file build "ltdbtool" in "make all" install ltdbtool with "make install" install the ltdbtool manpage with "make install" packaging: add ltdbtool and its manpage to the RPM Add a tunable "AllowClientDBAttach" with default value 1. Ronnie Sahlberg (308): Merge commit 'rusty/master' Add a code-style document. remove the "ctdb freeze" debugging command iupdate the docs that ctdb freeze is no more Merge remote branch 'martins/master' Update a log message to reflect that this does no longer only happen Create a new command "ctdb sync" that isd just an alias for "ctdb ipreallocate" Merge commit 'rusty/libctdb-new' into foo We use eventloop nesting in a couple of places, notably the sync update the example for the new signature of Add a new "ctdb addtickle" command to manually add tickles to ctdbd Remove the structure ctdb_control_tcp_vnn since this is identical to the structure ctdb_tcp_connection. Add machinereadable output for the "ctgdb gettickles <ip>" command On RHEL, "service nfs stop;service nfs start" and "service nfs restart" Merge commit 'rusty/vacuum-fix-master' Merge commit 'rusty/ports-from-1.0.112' into foo We need the deprecated talloc_append_string() for now Dont use the deprecated talloc_append_string() make it possible to "ctdb gettickle" to only list tickles for a certain add a new commandline flag -v to enable verbose output ctdb ip is very busy. Revert "tools/ctdb: add PartiallyOnline state for "ctdb status" and "ctdb status -Y"" Revert "version: generate RPM version from git" initial release for the 1.2 branch Dont set next_interval to 0. Dont set next_interval to 0. move the directives to build the devel file to the end of the specfile move the directives to build the devel file to the end of the specfile bump to -2 after fixing the specfile bug with wrong dependencies Add a command "ctdb pfetch <db> <record>" to read a record from get rid of two compiler warnings add a command to write a record to a persistent database Add a command "ctdb pfetch <db> <record>" to read a record from get rid of two compiler warnings add a command to write a record to a persistent database change "ctdb pfetch" to take an optional third argument change "ctdb pfetch" to take an optional third argument run the "init" event before we freeze the databases run the "init" event before we freeze the databases When "ctdb pfetch" creates a new file, make sure we set some initial sane mode bits When "ctdb pfetch" creates a new file, make sure we set some initial sane mode bits Dont initialize the domain socket for commands that do not require/use add a new command "ctdb tfetch" that can read a record straight out of the add a new command "ctdb tfetch" that can read a record straight out of the the tfetch command can be used without the daemon running, so flag it as such. the tfetch command can be used without the daemon running, so flag it as such. Add a configuration database, implemented as a persistent database. Add a configuration database, implemented as a persistent database. Add a new event "ipreallocated" Remove the dependency on the underlying cluster filesystem for handling remove the mention of a tickle and statd directory in shared storage now that we are removing these and migrating to store the data inside ctdbd or persistent databases Merge commit 'martins/master' into 1.2 we no longer have a 61.nfstickle script remove 61.nfstickles from the makefile new version 1.2.3 ouch, the ordering of the constants and the strings must be kept in sync ouch, remove a dummy debug printout that snuck in there somehow new version 1.2.4 dont print a lot of log information about shutting down vsftpd make sure all statd state directories exist before we try to reference them When memory allocations for recovery fails, Dont store temporary runtime data in $CTDB_BASE/state Change how NATGW is configured to allow special nodes that do not have Dont try to read the nodemap from the daemon for "ctdb listnodes" new version 1.2.5 remove an unused variable Implement a new function GETNODEMAP in libctdb. Add two new server types to the server_id structure. define and reserve a range of ctdb message ports for use by nfs and iscsi servers Update the comment for the range reserved for SAMBA and add a new serverid to send a message everytime an ip address is taken on the local node adda GETPUBLICIPS control to libctdb and use this in the test example set up a handler to catch and log debug messages from the tevent layer update/improve the log message related to rerecovery timeouts Add back monitoring for time skips, forward as well as backward. Create macros to update the statistics counters and use these macros Add a new statistics structure to keep the current running statistics Add rolling statistics that are collected across 10 second intervals. Create a tunable for how often to collect rolling statistics and initialize it to 1 second add a machinereadable version of ctdb stats/statistics when printing machinereadable statistics only print the header with the fieldnames once Dont log a normal vacuuming message about a missing record and using default vacuuming intervals as an error. get rid of the "ctdb setflags" command since change the hash function to use the much better Jenkins hash Spotted by rusty. dont stop checking interfaces after the first bond device Update the default hash size to be 100001 instead of 10000 Update latency countes to show min/max and average move extracting the config from config.tdb for public addresses New version 1.2.6 Make sure the statd directory exist before trying to access the Remove a debug message "Timed out waiting ..." try to restart NFS LOCKD if it failed to start If tdb_open() fails when trying to open the vacuuming database, remove checking for filesystems and filesystem health from the cnfs script. New version 1.2.7 Add support to create TDB databases using the new jenkins hash. new version 1.2.8 Drop the loglevel of the "reqid wrap" developer debug message to DEBUG Redirect the output from 00.ctdb pfetch to stdout. When shuttind down, we always unconditionally try to remove the natgw address during shutdown there is a window after we have stopped TCP and disconnected from all other nodes but before we have stopped all processing. Both nfs and nfslock scripts can fail under redhat in very rare situations. New version 1.2.9 when creating/adding a public ip, set the initial interface to be the first interface specified dont delete all ips from the system during the initial "init" event change the default for how long to waqit before dropping all ips to 120 seconds Add a new tunable : DisableIPFailover that when set to non 0 dont check the public ip assignment or if even we are hosting them and shouldnt when we load the public address file, at the same time check if we are already hosting the public address, if so, set ourselves up as the pnn for that address delay loading the public ip address file until after we have started the transport and discovered ouw own pnn number delete from old interface before adding to new interface this stuff is just so fragile that it will enter infinite recovery and fail loops Dont check remote ip allocation if public ip mgmt is disabled change the takeover script timeout to 9 seconds from 5 Dont exit the update ip function if the old and new interfaces are the same initialize the statistics to the current time, not start of epoch New version 1.2.10 add a new support function ctdb_check_counter_equal() Dont pollute the logs with a "file not found" message add an explicit _is_managed_service to iscsi eventscript update autostart/stop to work for samba new version 1.2.11 When we are no longer the natgw master, dont put the natgw ip on loopback. new version 1.2.12 dont try starting samba through the "init" event new version 1.2.13 during ip allocation, there are failure modes where a node might hold a ip address add a missing part of the import of the previous ganesha patch Add 60.ganesha to what gets installed by make install as well as by the RPM Remove LACOUNT and LACCESSOR and migrate the records immediately. change one of the reserved words in the ctdb ltdb header to be a flags field Add two new flags for the ltdb header. new version 1.2.14 add a new ctdb_ltdb function to delete a record in a normal database add new command line functions Add a new header flag for "migrated with data" and set this to 1 only run "serverid wipe" if we are actually running samba. LibCTDB libctdb When assigning the single-public-ip during startup, LVS ctdb addip: Revert "Add a new header flag for "migrated with data" and set this to 1" Revert "server: when we migrate off a record with data, set the MIGRATED_WITH_DATA flag" New version 1.2.15 50.samba Dont run net serverid wipe in the background 60.nfs 41.HTTPD New version 1.2.16 60.nfs Check if we have rpc.statd and if not, skip checking for statd Revert scheduling back to use real-time processes Add ctdb_fork(0 which will fork a child process and drop the real-time recoverd: avoid triggering a full recovery if just some ip allocation LIBCTDB uninitialized inqueue element STATD is 100027 not 1000247 TYPO IPALLOCATION : If the node is held pinned down in "init" state ADDIP failure We can not always rely on the recovery daemon pinging us in a timely manner LIBCTDB: add support for traverse change Christinas previous patch to only perform the check/logging New version 1.2.17 ctdb: hold transaction locks during freeze, mark during recover. TDB : Fix for a deadlock with transaction lock and lockall/lockallmark 60.nfs Add a new test tool that fetch locks a record and then blocks until it receives Compile fix LockWait congestion. If the node is stopped, put a log entry in /var/log/* to indicate this is why we never become ready New version 1.2.19 We default to non-deterministic ip now where ips are "sticky" and dont change New version 1.2.20 Dont allow client processes to attach to databases while we are still in recovery mode. Revert "Dont allow client processes to attach to databases while we are still in recovery mode." ctdb_req_dmaster from non-master New version 1.2.21 Deferred attach : at early startup, defer any db attach calls until we are out of recovery. ATTACH_DB: simplify the code slightly and change the semantics to only new version 1.2.23 If/when the recovery daemon terminates unexpectedly, try to restart it again from the main daemon instead of just shutting down the main deamon too. Restart recovery dameon if it looks like it hung. Dont allow clients to connect to databases untile we are well past and through Vacuuming: initialize a variable to avoid a harmless valgrind hit IP reallocation. If a public address is already hosted on the node when we startup, log a warning message but do not cause the recovery to fail. New version 1.2.25 Deferred attach: create the timed event as a child context of the da context we want to delete. new version 1.2.26 New version 1.2.27 This needs more testing first Merge branches '1.2' and '1.2' of 10.1.1.27:/shared/ctdb/ctdb-master into 1.2 NATGW: dont set arp_ignore in 11.natgw anymore since we no longer IFACE handling. Assume links are always good on nstartup (they almost always New version 1.2.28 If the eventscript is finished but state->ctdb is NULL, bonding mode 4 monitoring: Cleanup of logging messages/spamming Dont call the UPDATE event if both old and new interface is the same. Remove logging of spam/errors from the 10.interfrace Dont exit from checking interfaces once we have found one interface that is not If samba fails to start for some reason, make this cause the startup event to fail too, so that ctdbd will re-try the startup event later. New version 1.2.29 Remove all checking of GPFS from ctdb_diagnostics When using multiple VLANs, some funky stuff can sometimes happen when New version 1.2.30 Remove a benign by annoying log message that will be logged after an interface that has been in use has later been removed and is no longer referenced by any public addresses. change the name for the key for the record where we stoire the public address config from public-addresses... to public_addresses... When trying to re-balance the ip assignment and shuffle ips from Add log output to wipedb and backupdb new version 1.2.31 Update the delip command new version 1.2.32 Change the message when we start the daemon to "CTDB starting on node" remove a log message we dont need about "allow clients to attach to databases" remove a non-error logmessage about persistent databases being healthy, as expected remove log message we dont need Remove a log message about setting linkstate for an unknown interface. check the shares if they are available before we decide to try to restart nfs increase the persistent timeout to make people happier make the persistent even longer for lvs to make people even happier Add new eventscript 40.fs_use that can be used to monitor file system use and flag a node unhealthy when they become full document the new check for file system use When starting and stopping ctdb through the init-script, make sure we first clear all public ips bvefore we start the daemon, in case they are still hanging around since a previous kill -9 and also make sure we drop them after we have stopped the deamon when shutting down remove the nfs share check completely from the 1.2 branch Change the default for ip failover to be LCP2 and not DeterministicIPs new version 1.2.33 dont use a too big persistence timeout value Revert "Add new eventscript 40.fs_use that can be used to monitor file system use and flag a node unhealthy when they become full" Add a new command 'ctdb checktcpport <port>' Sometimes external services will activate Samba in ctdb without doing hte proper and correct New version 1.2.34 Drop loglevel for a tevent message from FATAL to ERROR new version 1.2.35 One of the entry points to release an ip reset the pnn field before invoking the eventscript. New version 1.2.36 new version 1.2.37 S1031575 new version 1.2.38 Eventscripts: Add special -ECANCELED status for monitor events that are cancelled New version : 1.2.39 ReadOnly records: Add a new RPC function FETCH_WITH_HEADER. ReadOnly: Add helper functions to manipulate a TDB_DATA as a bitmap for nodes that we are tracking as having a readonly delegation ReadOnly: Add test tool to validate the functions to manipulate and enumerate the bitmap of nodes to where we have readonly delegations ReadOnly: Add clientside functions to send the UPDATE_RECORD control 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) ReadOnly: Add 4 new record flags to handle read only delegation and revoking of delegations ReadOnly: Add printing of the record flags when we are traversing a database to print its content. 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. ReadOnly: After performing a recovery, clear out all flags related to readonly delegations and revoke 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 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. 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) ReadOnly: Add functions to register CALLs to a context used to handle deferal of processing of CALL commands. ReadOnly: Add a function to start a revoke of all delegations for a record. ReadOnly: Add a new flag to call request packet to indicate that the client wants a readonly delegation 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 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 ReadOnly: Add processing for ReadOnly delegation requests and revoke requests to the processing loop for CALL packets we receive from different nodes. 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 ReadOnly: Add a ctdb_ltdb_fetch_readonly() helper function ReadOnly: Add clientside code to fetch readonly records ReadOnly: Add a test tool to fetch a record, requesting a readonly delegation and lock the record once ReadOnly: Add a test tool that requests a readonly delegation in a loop ReadOnly: Change the update_record test tool to use the new fetchlock routine that can do either normal or readonly fetchlock 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 ReadOnly: clear out the tracking record once a revoke is completed ReadOnly: add description of readonly records ReadOnly: Check the readonly flag instead of whether the tdb pointer is NULL or not ReadOnly: Change the ctdb_db structure to keep a uint8_t for flags instead of a boolean for ReadOnly: add a readonly flag to the getdbmap control and show the readonly setting in ctdb getdbmap output ReadOnly: add a new control to activate readonly lock capability for a database. ReadOnly: update the documentation about readonly locks ReadOnly: Rename the function ctdb_ltdb_fetch_readonly() to ctdb_ltdb_fetch_with_header() since this is what it actually does. fix some compiler warnings for the test tools ReadOnly: revokechild_active is a list, not a context. 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. ReadOnly DOCS: update the docs for readonly delegations to remove the passage that records are written/updated by the client ReadOnly: fix bug writing incorrect amount of data in delegated record ReadOnly: add readonly record lock requests to libctdb ReadOnly: If record does not exist, upgrade to write-lock libctdb: dont allow ctdb_writerecord() for readonly records ReadOnly: update the loop test tool to print number of fetches per second New version 1.2.40 ReadOnly: Do not force all normal database to READONLY. Eventscripts: remove the horrible horrible circular reference between state and callback since these two structures do not even share the same parent talloc context. make tdb valgrind-happy Make KILLTCP structure a child of VNN so that it is freed at the same time When adding ips to nodes, set up a deferred rebalance for the whole node to trigger after 60 seconds in case the normal ipreallocated is not sufficient to trigger rebalance. Add a tunable variable to control how long we defer after a ctdb addip until we force a rebalance and try to failback addresses onto this node Vacuuming: change default timeout to 120 seconds READONLY: skip vacuuming or deleting records with readonly delegations. Niceify the readonlyrecord API. Dont force clients to be exposed to the fetch_with_header function READONLY: allow specifying the db name for setdbreadonly instead of just the hash READONLY: when updating a remote node to revoke a delegation, make sure READONLY: only send a control to schedule fast-vacuuming from child context iff we have a connection open to the main daemon READONLY: readonly fetch collapse. Make sure we only keep one single readonly fetch for a record in flight at a time. STATISTICS: add total counts for number of delegations and number of revokes Revert "READONLY: readonly fetch collapse. Make sure we only keep one single readonly fetch for a record in flight at a time." readonly, dont allow any kind of fast vacuum for ro delegated records new version 1.2.41 ReadOnly: Only restrict the readonly sanity/paranoia check that only allows new version 1.2.42 New version 1.2.43 New version 1.2.44 Add new command to find which interface is located on When we release an ip, get the interface name from the kernel When we find an ip we shouldnt host, just release it Rusty Russell (46): libctdb: removed unused lock field from struct ctdb_db libctdb: fix uninitialized field usage on ctdb_attach failure path libctdb: synchronous should be using ctdb_cancel to kill unfinished requests. libctdb: check ctdb_request_free & ctdb_cancel used appropriately. libctdb: ctdb_service() never returns < 0 libctdb: fix writerecord() to actually write the record. libctdb: fix io_elem resource leak on realloc failure. libctdb: implement ctdb_disconnect and ctdb_detachdb libctdb: implement synchronous readrecordlock interface. libctdb: test infrastructure libctdb: test: logging enhancement libctdb: test: improve logging of failure paths libctdb: test: --no-failtest libctdb: test: add database save and restore libctdb: test: add readrecordlock support libctdb: test: run.sh script ctdb: fix crash on "ctdb scriptstatus --events=releaseip" config: wrap iptables in flock to avoid concurrancy. libctdb: add synchronous message handling and unregister, with tests. tdb: fix short write logic in tdb_new_database tdb: remove unused variable in tdb_new_database(). tdb: Fix tdb_check() to work with read-only tdb databases. tdb: workaround starvation problem in locking entire database. talloc: update to 2.0.3 version from SAMBA event: Update events to latest Samba version 0.9.8 freeze: abort vacuuming when we're going to freeze. vacuum: fix crash on vacuum abort vacuum: disabling vacuuming during a freeze takeover: prevent crash by avoiding free in traverse on RST timeout logging: give a unique logging name to each forked child. idtree: fix right shift of signed ints, crash on large ids on AIX tdb: make check more robust against recovery failures. tdb: fix tdb_check() on read-only TDBs to actually work. tdb: fix tdb_check() on other-endian tdbs. tdb: put example hashes into header, so we notice incorrect hash_fn. tdb: increment version to 1.2.4 tdb: add Bob Jenkins lookup3 hash as helper hash. tdb: automatically identify Jenkins hash tdbs tdb: TDB_INCOMPATIBLE_HASH, to allow safe changing of default hash. tdb: fix non-WAF build, commit 1.2.6 ABI file. idtree: fix overflow for v. large ids on allocation and removal tdb: expose transaction lock infrastructure for ctdb ctdb_lockwait: create overflow queue. ctdbd: fix lock held on error ("ctdb_req_dmaster from non-master.") ctdbd: call tdb_reopen_all() in freeze child. eventscript: fix callback after free Stefan Metzmacher (3): config/interface_modify.sh: before calling a script check if it exists and is executable config/interface_modify.sh: do the echo before running the script events/10.interface: we need to mark interfaces as "up" if we don't know how to monitor them Volker Lendecke (3): Correctly set docdir tdb: add restore Add CTDB_CONTROL_CHECK_SRVID root (1): ctdbd_pid : dont assign the ctdbd_pid until we have finished startup and thus dont log warnings about 'Handling event ...' until startup has finished. ----------------------------------------------------------------------- -- CTDB repository