Rusty Russell [Thu, 1 Dec 2011 03:36:55 +0000 (14:06 +1030)]
ctdb_call: remove requirement that read-only requests be FETCH_WITH_HEADER
The original read-only record design had the client updating the local
copy of the header in the local tdb; ctdbd now does that itself, so
there's no reason that the client needs to fetch the record with header
to get a read-only copy.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Ronnie Sahlberg [Tue, 29 Nov 2011 23:05:59 +0000 (10:05 +1100)]
DOC: document the check_srvids debugging command
Ronnie Sahlberg [Tue, 29 Nov 2011 23:00:27 +0000 (10:00 +1100)]
ctdb: use libctdb version of check-srvids call
Ronnie Sahlberg [Tue, 29 Nov 2011 23:00:07 +0000 (10:00 +1100)]
LibCTDB: add support for the check-srvids control
Ronnie Sahlberg [Tue, 29 Nov 2011 22:50:12 +0000 (09:50 +1100)]
check_srvids: remove the <pnn> from the commandline so that we only specify the list of <srvids>
Specifying the pnn can be done via '-n <pnn>'
Volker Lendecke [Mon, 31 Oct 2011 15:21:54 +0000 (16:21 +0100)]
Add "ctdb check_srvid"
Volker Lendecke [Mon, 31 Oct 2011 12:29:13 +0000 (13:29 +0100)]
Add CTDB_CONTROL_CHECK_SRVID
Ronnie Sahlberg [Tue, 29 Nov 2011 21:59:03 +0000 (08:59 +1100)]
DOC: describe the RecoverPDBBySeqNum tunable
Ronnie Sahlberg [Mon, 28 Nov 2011 02:56:30 +0000 (13:56 +1100)]
Recover Persistent database DB by DB and not record by record
Add a new tunable that changes the mode how persistent databases are recovered.
RecoveryPDBBySeqNum
When set to 1, persistent databases will be recovered in whole from the node which
has the highest "__db_sequence_number__" record.
This record is managed by samba for those databases where we do persistent writes and have
inter-record relations.
For these databases we do not want the usual "blend records from all nodes based
on individual record RSN" but instead a mode where we pick one instance of the persistent database.
If no node was found with a "__db_sequence_number__" record at all, we fail back to the original "recover records independently based on record RSN".
Some persistent databases do not contain record interrelations and as such does not
contain this special record at all.
Ronnie Sahlberg [Mon, 28 Nov 2011 05:30:46 +0000 (16:30 +1100)]
LibCTDB: add get persistent db seqnum control
Ronnie Sahlberg [Sun, 27 Nov 2011 23:41:17 +0000 (10:41 +1100)]
DB Seqnum: must provide a ctdb_ltdb_header when calling ctdb_ltdb_fetch()
Michael Adam [Tue, 29 Nov 2011 12:42:40 +0000 (13:42 +0100)]
doc: commit generated ctdb.1 manpages after xml change
Michael Adam [Tue, 29 Nov 2011 12:41:16 +0000 (13:41 +0100)]
doc: document the "--print-recordflags" parameter to "ctdb"
Michael Adam [Tue, 29 Nov 2011 09:24:52 +0000 (10:24 +0100)]
ctdb: add an option --print-recordflags to trigger printing record flags in catdb and dumpdbbackup
This changes the default behaviour to not print record flags.
Michael Adam [Tue, 29 Nov 2011 12:39:37 +0000 (13:39 +0100)]
doc: commit generated ctdb.1 manpages after xml change
Michael Adam [Tue, 29 Nov 2011 12:39:08 +0000 (13:39 +0100)]
doc: document the "--print-hash" parameter to "ctdb".
Michael Adam [Mon, 28 Nov 2011 23:56:23 +0000 (00:56 +0100)]
ctdb: add an option --print-hash to enable printing of record hashes when dumping dbs
Michael Adam [Tue, 29 Nov 2011 12:37:29 +0000 (13:37 +0100)]
doc: commit generated ctdb.1 manpages after xml change
Michael Adam [Tue, 29 Nov 2011 12:36:38 +0000 (13:36 +0100)]
doc: document the "--print-lmaster" parameter to "ctdb"
Michael Adam [Mon, 28 Nov 2011 16:36:03 +0000 (17:36 +0100)]
ctdb: add an option --print-lmaster to enable printing of lmaster in "ctdb catdb"
Michael Adam [Tue, 29 Nov 2011 12:35:02 +0000 (13:35 +0100)]
doc: commit generated ctdb.1 manpages after xml change
Michael Adam [Tue, 29 Nov 2011 12:31:11 +0000 (13:31 +0100)]
doc: document the "--print-datasize" parameter to "ctdb"
Michael Adam [Mon, 28 Nov 2011 16:19:03 +0000 (17:19 +0100)]
ctdb: add an option --print-datasize to only print datasize instead of dumping data in db dumps
Used in catdb, cattdb and dumpdbbackup.
Michael Adam [Tue, 29 Nov 2011 12:32:25 +0000 (13:32 +0100)]
doc: commit generated ctdb.1 manpages after xml change
Michael Adam [Tue, 29 Nov 2011 12:28:35 +0000 (13:28 +0100)]
doc: document the --print-emptyrecords switch in the "ctdb" manpage.
Michael Adam [Mon, 28 Nov 2011 16:11:16 +0000 (17:11 +0100)]
ctdb: add an option --print-emptyrecords to enable printing of empty records in dumping databases
this option is used with the commands catdb, cattdb and dumpdbbackup.
Michael Adam [Wed, 22 Dec 2010 11:45:06 +0000 (12:45 +0100)]
client: add version ctdb_traverse_ext() of ctdb_traverse() that can list empty records.
Michael Adam [Sun, 27 Nov 2011 22:16:33 +0000 (23:16 +0100)]
traverse: add a flag to enable transferring empty records in cluster wide traverse
This will be useful for also printing information about empty/deleted
records in "ctdb catdb", e.g. for debugging vacuuming issues.
Stefan Metzmacher [Tue, 21 Jun 2011 13:49:30 +0000 (15:49 +0200)]
recoverd: try to become the recovery master if we have the capability, but the current master doesn't
metze
(cherry picked from commit
6ba8af28f8a8f79db65120a97d7157dcc5c7e083)
Signed-off-by: Michael Adam <obnox@samba.org>
Ronnie Sahlberg [Tue, 29 Nov 2011 03:38:02 +0000 (14:38 +1100)]
This breaks the build since the recovery loop is different in master
compared to old 1.0 branches
This must have been mistakenly applied to master when you intended to push
for a different branch i guess.
Revert "recoverd: try to become the recovery master if we have the capability, but the current master doesn't"
This reverts commit
a97d417aba85e901540147a4dff4794249442939.
Stefan Metzmacher [Tue, 21 Jun 2011 13:49:30 +0000 (15:49 +0200)]
recoverd: try to become the recovery master if we have the capability, but the current master doesn't
metze
Stefan Metzmacher [Tue, 21 Jun 2011 13:46:34 +0000 (15:46 +0200)]
recoverd: let async_getcap_callback() also update ctdb->capabilities
metze
Michael Adam [Sat, 26 Nov 2011 00:06:13 +0000 (01:06 +0100)]
vacuum: update (C) from vacuum rewrite
Michael Adam [Fri, 25 Nov 2011 12:55:20 +0000 (13:55 +0100)]
vacuum: write a big and up-to-date explaining comment for ctdb_vacuum_db()
Michael Adam [Fri, 25 Nov 2011 12:54:48 +0000 (13:54 +0100)]
vacuum: fix a comment typo in vacuum_traverse()
Michael Adam [Fri, 25 Nov 2011 12:35:05 +0000 (13:35 +0100)]
vacuum: fix horrible indentation/whitespacing for ctdb_vacuum_event()
Michael Adam [Fri, 25 Nov 2011 12:34:15 +0000 (13:34 +0100)]
vacuum: fix a comment typo in vacuum_traverse()
Michael Adam [Fri, 25 Nov 2011 12:25:27 +0000 (13:25 +0100)]
vacuum: fix an abundance of indentation white spaces in ctdb_vacuum_db()
Michael Adam [Fri, 25 Nov 2011 12:23:23 +0000 (13:23 +0100)]
vacuum: rename "size" to "freelist_size" for clarity
Michael Adam [Fri, 2 Sep 2011 23:30:08 +0000 (01:30 +0200)]
build: add target libctdb.so.0 and symlink libctdb.so
Michael Adam [Fri, 25 Nov 2011 16:07:24 +0000 (17:07 +0100)]
build: add socket_wrapper objects to test binaries
Michael Adam [Thu, 20 Oct 2011 12:17:45 +0000 (14:17 +0200)]
build: add option --enable-socket-wrapper to build binaries with socket wrapper support
Michael Adam [Thu, 20 Oct 2011 12:17:25 +0000 (14:17 +0200)]
add socket_wrapper from samba
Andreas Schneider [Fri, 19 Feb 2010 11:44:07 +0000 (12:44 +0100)]
libutil: Remove obsolete signal type cast.
Michael Adam [Fri, 25 Nov 2011 15:29:44 +0000 (16:29 +0100)]
build: add libreplace network checks to configure
Michael Adam [Fri, 25 Nov 2011 15:36:40 +0000 (16:36 +0100)]
update lib/replace to current upstream version (samba master)
Michael Adam [Fri, 25 Nov 2011 16:01:58 +0000 (17:01 +0100)]
system_linux: correctly cast sockaddr_in6 to sockaddr for sendto() in ctdb_sys_send_tcp()
Michael Adam [Fri, 25 Nov 2011 15:59:51 +0000 (16:59 +0100)]
system_linux: correctly cast sockaddr_in to sockaddr in ctdb_sys_send_tcp()
Michael Adam [Fri, 25 Nov 2011 15:42:53 +0000 (16:42 +0100)]
logging: properly cast sockaddr_in to sockaddr for sendto() in ctdb_syslog_log()
Michael Adam [Fri, 25 Nov 2011 15:41:59 +0000 (16:41 +0100)]
logging: some whitespace cleanup in ctdb_syslog_log()
Michael Adam [Fri, 25 Nov 2011 15:40:52 +0000 (16:40 +0100)]
logging: properly cast sockaddr_in to sockaddr for bind in start_syslog_daemon()
Ronnie Sahlberg [Fri, 18 Nov 2011 04:01:13 +0000 (15:01 +1100)]
Merge remote branch 'martins/eventscripts'
Ronnie Sahlberg [Fri, 18 Nov 2011 03:46:45 +0000 (14:46 +1100)]
Merge remote branch 'martins/scriptstatus'
Ronnie Sahlberg [Fri, 18 Nov 2011 03:45:56 +0000 (14:45 +1100)]
Merge remote branch 'martins/ctdb_control_oom'
Ronnie Sahlberg [Fri, 18 Nov 2011 03:42:10 +0000 (14:42 +1100)]
Merge remote branch 'martins/hashinclude'
Ronnie Sahlberg [Fri, 18 Nov 2011 03:36:45 +0000 (14:36 +1100)]
Merge remote branch 'martins/warnings'
Ronnie Sahlberg [Thu, 17 Nov 2011 02:34:29 +0000 (13:34 +1100)]
Eventscripts: Add special -ECANCELED status for monitor events that are cancelled
When a monitor event is canceled by a higher priority script, make sure we return
status -ECANCELED to the callback in ctdB_monitor.c
Also treat -ECANCELED as a simple "try monitor event again" and skip modifying any HEALTHY/UNHEALTHY flags when this happens
Martin Schwenke [Thu, 17 Nov 2011 05:47:00 +0000 (16:47 +1100)]
Eventscripts - add facility to 10.interface to delete unmanaged IPs
For a number of reasons (delip failure, admin stupidity, ...) an
interface that hosts public addresses can also contain spurious,
unmanaged addresses.
Add functionality to 10.interfaces, controlled by new configuration
variable CTDB_DELETE_UNEXPECTED_IPS, to delete these addresses when
encountered as part of a monitor event.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 14 Oct 2011 04:55:12 +0000 (15:55 +1100)]
Eventscripts - remove $0 from error messages in 40.fs_use
The script name is now prepended to output by ctdbd.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 14 Oct 2011 04:52:12 +0000 (15:52 +1100)]
Eventscripts: Make 40.fs_use use less processes and arguably clearer.
* $fs can be parsed using shell prefix and suffix removal.
* df output can be parsed with a single call to sed.
Failure is indicated by empty output from sed, so we check for that
as the error condition, changing the associated message
appropriately.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Wed, 16 Nov 2011 04:25:14 +0000 (15:25 +1100)]
Relax an out of memory message.
The call to ctdb_transport_allocate() can fail for 2 reasons:
* Unable to allocate memory.
* The transport is down, perhaps because CTDB is shutting down.
Either cause will be appropriately logged.
The current use of CTDB_NO_MEMORY_VOID() prints an "out of memory"
message regardless of what happened in ctdb_transport_allocate() and
this could be misleading.
Change this to print a more relaxed message.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 11 Nov 2011 03:41:47 +0000 (14:41 +1100)]
Make some ctdb_takeover.c functions static
These were intentionally not static so they could be linked to in unit
test programs. However, using the CCAN-style unit tests where
relevant code is just included, this is no longer necessary.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 11 Nov 2011 03:15:52 +0000 (14:15 +1100)]
Tests: change ctdb_takeover_tests.c to include ctdbd code
Do this instead of linking to it. This means that, after previous
cleanups, we can fix ctdb_takeover.c to use static functions when
appropriate and simply include all the code we need to run tests.
To make this reusable in other tests, new file ctdbd_tests.c does all
of the relevant including. ctdb_takeover_tests.c just includes that
file.
Test objects built in this way can depend on new Makefile macro
$(CTDB_TEST_C), which contains ctdbd_tests.c and everything it
includes.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 11 Nov 2011 03:06:21 +0000 (14:06 +1100)]
Rename ctdb_control_get_stat_history() local variable to avoid shadowing.
Local variable stat generates a warning because it shadows a global
declatation, presumably stat(2). Rename it to s.
This is in the context of wanting to run CCAN-style tests where most
of the ctdbd code is just included in the test program.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 11 Nov 2011 03:03:59 +0000 (14:03 +1100)]
Rename ctdb_ctrl_getscriptstatus() parameter to avoid shadowing a global
Rename parameter script_status to scripts to avoid shadowing a global
function with the same name in eventscript.c.
This is in the context of wanting to run CCAN-style tests where most
of the ctdbd code is just included in the test program.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 11 Nov 2011 03:02:09 +0000 (14:02 +1100)]
Rename ctdb_control_destructor() to ctdb_client_control_destructor()
This avoids a name clash with a slightly different function in
ctdb_control.c.
This is in the context of wanting to run CCAN-style tests where most
of the ctdbd code is just included in the test program.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 11 Nov 2011 02:56:46 +0000 (13:56 +1100)]
Move some common functions to common/ctdb_ltdb.c
Move identical copies of ctdb_null_func(), ctdb_fetch_func(),
ctdb_fetch_with_header_func() from ctdb_client.c and
ctdb_ltdb_server.c to somewhere common.
This is in the context of wanting to run CCAN-style tests where most
of the ctdbd code is just included in the test program.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Fri, 11 Nov 2011 01:41:24 +0000 (12:41 +1100)]
Added some #ifndefs to stop files being included multiple times.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Thu, 10 Nov 2011 04:12:25 +0000 (15:12 +1100)]
Clean up warnings: rpcgen output contains unused variable.
Grep it out in the Makefile. This should be very obvious if the
output changes and the grep breaks something.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Thu, 10 Nov 2011 04:07:55 +0000 (15:07 +1100)]
Fix lib/replace
Warnings are generated when compiling strptime.c. Why is it being
compiled on Linux? strptime(3) has been in glibc for 15 years!
It turns out that some of the test fragments were being looked for in
lib/replace/test/ and some in lib/replace/tests/. In addition,
test*/strptime.c was missing.
Move the tests to lib/replace/test/ for consistency with upstream
(Samba) and copy in test/strptime.c from Samba. Tweak repdir.m4 to
handle the directory rename.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Thu, 10 Nov 2011 03:16:42 +0000 (14:16 +1100)]
Clean up warnings: popt sure does some strange things
popt generates 4 compiler warnings with GCC 4.6. There are 2
different types:
* 3 instances of:
warning: cast discards ‘__attribute__((const))’ qualifier from pointer target type [-Wcast-qual]
One occurs in the _free() hack that is used to try and avoid a
compiler warning. I guess GCC got smarter? ;-)
The other is where an array of constant strings is passed to
execvp(2), which arguably has the wrong type, since it has no need
to modify the strings.
Both of these can be worked around by casting to intptr_t before
casting to the desired argument type.
In poptReadConfigFile() the variable file is declared to be a
constant string. However, it is then passed to read(2) straight
away and an attempt is made to cast away the "const". However, to
protect the value the of file is assigned to (const char *) chptr
before it is passed to any other functions, so this protects the
value anyway. I'm not sure exactly what the thinking was
here... but there seems to be no use having file be constant.
* 1 instance of:
warning: variable ‘rc’ set but not used [-Wunused-but-set-variable]
for the result of an execvp(2) call. Recast the return type to
void. However, due to some #if-fu in the function, that can make rc
unused in this function. So we also need to wrap the declaration of
rc in some corresponding #if-fu to make it disappear if not used.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Thu, 10 Nov 2011 04:41:03 +0000 (15:41 +1100)]
Fix ctdb scriptstatus -n all
This didn't have auto_all set as true. However, there's no special
code to handle "-n all" and it just fails. If auto_all works for
status then it might as well work for scriptstatus.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Thu, 10 Nov 2011 03:10:21 +0000 (14:10 +1100)]
Clean up warnings: add -Wno-format-zero-length to CFLAGS
There's an empty string passed to ctdb_event_script_callback() for
eventscript option arguments in ctdb_start_daemon() and this generates
a warning.
This type of warning seems pointless so let's switch it off.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Thu, 10 Nov 2011 03:08:59 +0000 (14:08 +1100)]
Clean up warnings: -Wunused-but-set-variable in tevent_signal.c
Have sent this upstream to Samba.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Wed, 9 Nov 2011 04:47:30 +0000 (15:47 +1100)]
Clean up warnings: remove unused function dump_packet()
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Wed, 9 Nov 2011 04:37:24 +0000 (15:37 +1100)]
Clean up warnings: remove unused variable alen from scsi_io
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Wed, 9 Nov 2011 04:36:09 +0000 (15:36 +1100)]
Clean up warnings: remove set but unused variable from rb_test
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Wed, 9 Nov 2011 04:20:07 +0000 (15:20 +1100)]
Clean up warnings: log some unchecked return codes from function calls
In a few places functions are called, the return code is assigned into
a variable but it is not checked. This generates a compiler warning
like this:
warning: variable ‘ret’ set but not used [-Wunused-but-set-variable]
Instead we remove the warning by checking the return code variable and
log a warning at DEBUG level if the return code indicates an error.
The justification is that there may have been a future intent to check
the return code but it hasn't been important enough to follow-up. If
it matters, it will be logged for easy debugging.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Wed, 9 Nov 2011 03:55:07 +0000 (14:55 +1100)]
Fix typo in ctdb_ltdb_store_server()
The if statement uses ret but means to use ret2.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Wed, 9 Nov 2011 03:45:01 +0000 (14:45 +1100)]
Clean up warnings: remove changed_flags in monitor_helper
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Wed, 9 Nov 2011 03:41:17 +0000 (14:41 +1100)]
Clean up warnings: ‘tevent_loop_allow_nesting’ is deprecated
CTDB wants to use these functions but Samba's tevent wants to mark
them deprecated. This adds a #define to shut up the warnings and sets
it in CFLAGS.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Ronnie Sahlberg [Tue, 8 Nov 2011 21:12:44 +0000 (08:12 +1100)]
SRVID ranges: Change the ranges for SRVIDs to allow 8 bit prefixes
Update the ranges used for SRVID allocation to allow 8 bit prefixes and thus
56 user-defined bits.
Define the defacto-use of the 0x00 prefix as a SRVID used to register a process id
Upgrade SAMBA/iSCSI/NFS/TEST from a 32 bit prefix each ot a 8 bit prefix each
for private use.
Mathieu Parent [Sat, 5 Nov 2011 15:39:55 +0000 (16:39 +0100)]
Nagios plugin for CTDB
This plugin is GPL2 or greater as generally found in Nagios.
(this is obviously compatible with GPL3 or greater).
Mathieu Parent [Sat, 15 Oct 2011 17:50:12 +0000 (19:50 +0200)]
config can be in /etc/default/ instead of /etc/sysconfig/ (ctdb_gnostics part)
Mathieu Parent [Sat, 15 Oct 2011 17:42:45 +0000 (19:42 +0200)]
config can be in /etc/default/ instead of /etc/sysconfig/
... on Debian system and derivated.
(ctdb_diagnostics still hardcodes /etc/sysconfig/)
Mathieu Parent [Thu, 13 Oct 2011 18:26:05 +0000 (20:26 +0200)]
config/functions: CTDB_VARDIR is /var/lib/ctdb on Debian-like systems
Ronnie Sahlberg [Tue, 8 Nov 2011 05:20:09 +0000 (16:20 +1100)]
New version 1.12
* Tue Nov 8 2011 : Version 1.12
- Add new tunable : AllowClientDBAttach that can be used to stop
client db access during maintenance operations
- Updated logging for interfaces that are missing or dont exist but are
configured to be used.
- Add timeout argument to ctdb_cmdline_client
- PDMA support
- Initial support for 'readonly' delegations for ctdb databases
This will when finished greatly improve performance for contended hot
records that are used for just read-access.
- New 'ctdb cattdb' command
- Massive updates to tests and eventscripts
- LCP2 ip allocation algorithm
- Record Fetch collapse. Collapse multiple fetch-lock requests from cients
to a single network fetch and defer other concurrent requests until the
initial fetch completes, and then service the deferred calls locally.
This will greatly improve performance for contended hot records
where clients request write-locks.
Ronnie Sahlberg [Mon, 7 Nov 2011 19:55:46 +0000 (06:55 +1100)]
Record Fetch Collapse: Collapse multiple fetch request into one single request.
When multiple clients fetch the same record concurrently, send only one single
fetch across the network and deferr all other fetches locally.
This improves performance for hot records and reduces cpu load on ctdb.
Ronnie Sahlberg [Tue, 8 Nov 2011 03:06:30 +0000 (14:06 +1100)]
Merge remote branch 'martins/lcp2fix'
Ronnie Sahlberg [Tue, 8 Nov 2011 03:01:22 +0000 (14:01 +1100)]
Merge branch 'master' of 10.1.1.27:/shared/ctdb/ctdb-master
Ronnie Sahlberg [Wed, 2 Nov 2011 02:33:28 +0000 (13:33 +1100)]
RB_TREE: Add mechanism to abort a traverse
This patch changes the callback signature for traversal
functions to allow a client to abort a traverse before it finishes.
Updates to all callers and examples as well as rb-test tool.
Volker Lendecke [Tue, 1 Nov 2011 13:34:35 +0000 (14:34 +0100)]
Fix some typos
Signed-off-by: Michael Adam <obnox@samba.org>
Martin Schwenke [Tue, 1 Nov 2011 09:56:50 +0000 (20:56 +1100)]
Tests - IP allocation - add some extra output due to recent fix
A recent fix made the LCP2 algorithm try harder find a candidate
source node. The debug output shows extra output because it is trying
harder so we accommodate that.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Tue, 1 Nov 2011 09:52:57 +0000 (20:52 +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 <martin@meltin.net>
Martin Schwenke [Tue, 1 Nov 2011 08:59:29 +0000 (19:59 +1100)]
Tests - IP allocation - new test that shows current LCP2 failure
There are 4 IPs across 2 nodes and 2 addresses across 2 other nodes.
If one of the latter nodes is unhealthy and then becomes healthy
again, an IP isn't failed back. This is because the nodes in the 1st
group are >= unbalanced then the nodes in the 2nd group.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Tue, 1 Nov 2011 08:54:28 +0000 (19:54 +1100)]
Tests - Allow some tests in ctdb_takover_tests to specify allowed nodes
This mainly applies to ctdb_takeover_run_core when you might want to
specify that some IPs can only be hosted by some nodes.
Syntax on each line is now:
IP current_pnn allowed_pnns
where allowed_pnns is a comma-separated list.
allowed_pnns is optional. If not specified then address can be
assigned to all nodes that aren't included in an allowed_pnns list.
Just think of it as all PNNs and that the behaviour is undefined when
you only specify allowed_pnns for some IPs. ;-)
current_pnn is optional and defaults to -1.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Tue, 1 Nov 2011 08:54:01 +0000 (19:54 +1100)]
Tests - IP allocation tests - must export CTDB_LCP2.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Martin Schwenke [Tue, 1 Nov 2011 08:49:38 +0000 (19:49 +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 <martin@meltin.net>
Ronnie Sahlberg [Mon, 31 Oct 2011 09:25:16 +0000 (20:25 +1100)]
Merge remote branch 'ddiss/master_pmda_namespace'
Ronnie Sahlberg [Fri, 28 Oct 2011 05:04:55 +0000 (16:04 +1100)]
Merge branch 'master' of 10.1.1.27:/shared/ctdb/ctdb-master