sahlberg/ctdb.git
14 years agoNew version 1.0.112-17
Ronnie Sahlberg [Thu, 22 Apr 2010 23:07:03 +0000 (09:07 +1000)]
New version 1.0.112-17

* Fri Apr 23 2010 : Version 1.0.112-17
 - In ctdb-crash-cleanup.sh  also check for and remove the NATGW address
   if set.
 - Add monitoring and warning of low memory condition
   CTDB_MONITOR_FREE_MEMORY_WARN

14 years agoAdd a setting where CTDB will monitor and warn for low memory conditions.
Ronnie Sahlberg [Thu, 22 Apr 2010 22:52:09 +0000 (08:52 +1000)]
Add a setting where CTDB will monitor and warn for low memory conditions.

    CTDB_MONITOR_FREE_MEMORY_WARN

BZ 59747

14 years agoIn the example script to remove all ip addresses after a ctdb crash,
Ronnie Sahlberg [Thu, 22 Apr 2010 22:35:01 +0000 (08:35 +1000)]
In the example script to remove all ip addresses after a ctdb crash,
add the NATGW address as one to be removed in addition to the
public addresses.

14 years agoNew version 1.0.112-16
Ronnie Sahlberg [Thu, 22 Apr 2010 04:16:39 +0000 (14:16 +1000)]
New version 1.0.112-16

14 years agoadd an example script that can be called from crontab to cleanup
Ronnie Sahlberg [Thu, 22 Apr 2010 04:02:11 +0000 (14:02 +1000)]
add an example script that can be called from crontab to cleanup
and release public ip addresses if ctdbd is no longer running

14 years agoadd a missing ||
Ronnie Sahlberg [Thu, 22 Apr 2010 03:36:13 +0000 (13:36 +1000)]
add a missing ||
to make the 10.interface script not fail with a syntax error

14 years agoNew version 1.0.112-15
Ronnie Sahlberg [Wed, 21 Apr 2010 05:42:00 +0000 (15:42 +1000)]
New version 1.0.112-15

* Wed Apr 21 2010 : Version 1.0.112-15
 - Change how we add/remove iptable rules during recovery to make
   rules leaks less likey.
 - change a debug message loglevel from ERR to NOTICE
   BZ62086
 - In the recovery daemon, track pulbic ip assignment
   across the cluster and verify consistency.
 - From Martins: change the 10.interface script to handle
   virtio interfaces correctly for virtual clusters.
 - Make the recovery master verify the reclock setting across the cluster
   and ban nodes with inconsistencies.
   BZ56354

14 years agoLet the recovery master verify the reclock setting on all nodes in the cluster.
Ronnie Sahlberg [Wed, 21 Apr 2010 03:46:54 +0000 (13:46 +1000)]
Let the recovery master verify the reclock setting on all nodes in the cluster.

Any node that is found to use a different filename from the first node
will be banned.

Nodes that have no reclock file at all configured are ignored in this check.

BZ56354

14 years agoBackport of patch to handle virtio interfaces correctly.
Ronnie Sahlberg [Tue, 20 Apr 2010 02:28:16 +0000 (12:28 +1000)]
Backport of patch to handle virtio interfaces correctly.
(ethtool does not work on these)

14 years agoIn the recovery daemon, keep track of which node we have assigned public ip
Ronnie Sahlberg [Thu, 8 Apr 2010 04:07:57 +0000 (14:07 +1000)]
In the recovery daemon, keep track of which node we have assigned public ip
addresses and verify that the remote nodes have/keep a consistent view of
assigned addresses.

If a remote node has an inconsistent view of addresses visavi the recovery
master this will trigger a full ip reallocation.

14 years agoLower the loglevel for "Recovery lock successfully taken"
Ronnie Sahlberg [Wed, 7 Apr 2010 00:42:51 +0000 (10:42 +1000)]
Lower the loglevel for "Recovery lock successfully taken"
from ERR to NOTICE

BZ62086

14 years agoVolker experienced a situation where we leaked iptable rules
Ronnie Sahlberg [Wed, 31 Mar 2010 00:20:25 +0000 (11:20 +1100)]
Volker experienced a situation where we leaked iptable rules
and continued to block an ipaddress after a recovery had completed.

Rework how we handle the iptables blocking and use a new separate
table for all failover related blocks so that we can find these rules and
remove them more easily from outside of the takeip and releaseip events.

14 years agoNew version 1.0.112-14
Ronnie Sahlberg [Mon, 29 Mar 2010 05:58:53 +0000 (16:58 +1100)]
New version 1.0.112-14

-   events:50.samba: wipe the local part of the serverid db before starting winb
    This is necessary for the new serverid approach.

14 years agoevents:50.samba: wipe the local part of the serverid db before starting winbind/smnd...
Michael Adam [Fri, 26 Mar 2010 16:33:51 +0000 (17:33 +0100)]
events:50.samba: wipe the local part of the serverid db before starting winbind/smnd/nmbd

This is necessary for the new serverid approach.

Michael

14 years agoNew Version 1.0.112-13
Ronnie Sahlberg [Wed, 24 Mar 2010 04:54:15 +0000 (15:54 +1100)]
New Version    1.0.112-13

14 years agoTry to restart NFS if "service nfs start" failed.
Ronnie Sahlberg [Wed, 24 Mar 2010 04:51:02 +0000 (15:51 +1100)]
Try to restart NFS if "service nfs start" failed.

BZ61827

14 years ago new version 1.0.112-12
Ronnie Sahlberg [Thu, 11 Mar 2010 07:05:06 +0000 (18:05 +1100)]
 new version 1.0.112-12

* Wed Mar 11 2010 : Version 1.0.112-12
 - From christian ambach : drop the loglevel of a vacuuming message
 - From  Wolfgang Mueller-Friedt : fix bug in ctdb_setstatus
 - Use "service nfs status" instead of rpcinfo when probing nfs
 - make sure to always create the tickles directory

14 years agoadjust a vacuum log level
Christian Ambach [Wed, 10 Mar 2010 17:46:15 +0000 (18:46 +0100)]
adjust a vacuum log level

made the severity of the decreasing interval log level the same as for the increasing,
they are both just info logs because they don't report errors

14 years agoctdb_setstatus in /etc/ctdb/functions was not working correctly because it was called...
Wolfgang Mueller-Friedt [Wed, 10 Mar 2010 09:39:31 +0000 (10:39 +0100)]
ctdb_setstatus in /etc/ctdb/functions was not working correctly because it was called with a wrong parameter list

14 years agoMake sure to always create the tickle directories for nfs
Ronnie Sahlberg [Mon, 8 Mar 2010 18:27:41 +0000 (05:27 +1100)]
Make sure to always create the tickle directories for nfs
on the monitor event

BZ56707

14 years agoChange the test if NFS is working to use "service nfs status"
Ronnie Sahlberg [Mon, 8 Mar 2010 18:15:33 +0000 (05:15 +1100)]
Change the test if NFS is working to use "service nfs status"
instead of rpcinfo to the nfs program.

14 years agoNew version 1.0.112-11
Ronnie Sahlberg [Thu, 25 Feb 2010 01:34:27 +0000 (12:34 +1100)]
New version 1.0.112-11

* Thu Feb 25 2010 : Version 1.0.112-11
 - Increase default script timeout to 90 seconds.
   BZ 61113
 - Add a new tunable EventScriptLogTimeout which will log a message everytime
   a monitor script takes longer than this to finish.
   BZ 61118

14 years agoAdd a tunable EventScriptLogTimeout that will log an error everytime a
Ronnie Sahlberg [Thu, 25 Feb 2010 01:22:32 +0000 (12:22 +1100)]
Add a tunable EventScriptLogTimeout that will log an error everytime a
monitoring script took longer than this.

BZ 61118

14 years agoIncrease the default script timeout to 90 seconds.
Ronnie Sahlberg [Thu, 25 Feb 2010 00:58:07 +0000 (11:58 +1100)]
Increase the default script timeout to 90 seconds.

BZ 61113

14 years agonew version 1.0.112-10
Ronnie Sahlberg [Tue, 23 Feb 2010 05:19:51 +0000 (16:19 +1100)]
new version 1.0.112-10

* Tue Feb 23 2010 : Version 1.0.112-10
 - revert the change in 10.0.0.112-9 and make a new attempt to make the scripts\
 behave.
 - make writing the ticklelist in 61.nfstickle a background task to avoid
   having a long cluster fs pause cause a node to become unhealthy
 - critical bugfix. during an error path in the "end recovery" code
   we could release a memory block before we had finished referencing it
   which could lead to a segv.   bz 61068
 - make sure we tear down the natgw configuration when a node become stopped
   or else we might end up with a duplicate ip address when a different node
   takes over the natgw role.   bz 61036

14 years agostore the nfs tickles for 61.nfstickle in a background shell
Ronnie Sahlberg [Tue, 23 Feb 2010 05:09:09 +0000 (16:09 +1100)]
store the nfs tickles for 61.nfstickle in a background shell
instead of blocking while it finishes.

this avoids having the eventscript hang/timeout if the underlying cluster filesystem hangs and blocks for 30+ seconds.

14 years agoRevert "Ignore any scripts that timesout for most events, except startup."
Ronnie Sahlberg [Tue, 23 Feb 2010 05:07:17 +0000 (16:07 +1100)]
Revert "Ignore any scripts that timesout for most events, except startup."

This reverts commit 527597ed6d9142c0b47a9c419c828793826ac95e.

14 years agoIn ctdb_control_end_recovery,
Ronnie Sahlberg [Tue, 23 Feb 2010 01:43:49 +0000 (12:43 +1100)]
In ctdb_control_end_recovery,

We used to talloc_steal c (the command packet) and make it a child of the
"event script state context".
If we failed to create a eventscript child context for some reason,
this would have talloc freed state, but at the same time it would also
implicitely have freed c.
Once ctdb_control_end_recovery() returns the error back to the caller,
the caller would dereference both c, and also outdata which is a child of c
and we would either read garbage data or segv.

Change the ordering so we only talloc_steal c as a child of state IFF
we have successfully created a child context for the script.

BZ61068

14 years ago Make sure that the natgw eventscript also triggers on the "stopped" event
Ronnie Sahlberg [Mon, 22 Feb 2010 23:14:51 +0000 (10:14 +1100)]
Make sure that the natgw eventscript also triggers on the "stopped" event
    to remove the natgw configuration and ip assignments used.

BZ61036

14 years agonew version 1.0.112-9
Ronnie Sahlberg [Tue, 16 Feb 2010 00:20:19 +0000 (11:20 +1100)]
new version 1.0.112-9

14 years agoIgnore any scripts that timesout for most events, except startup.
Ronnie Sahlberg [Tue, 16 Feb 2010 00:18:43 +0000 (11:18 +1100)]
Ignore any scripts that timesout for most events, except startup.

Threat hung scripts always (except startup) as success.

14 years agonew version 1.0.112-8
Ronnie Sahlberg [Sun, 14 Feb 2010 23:49:33 +0000 (10:49 +1100)]
new version 1.0.112-8

14 years agotry to restart rpc-rquotad if it is not running
Ronnie Sahlberg [Fri, 12 Feb 2010 02:19:57 +0000 (13:19 +1100)]
try to restart rpc-rquotad if it is not running

bz60317

14 years agoLeave sequence number alone when merely migrating records.
Rusty Russell [Fri, 12 Feb 2010 06:32:56 +0000 (17:02 +1030)]
Leave sequence number alone when merely migrating records.

(Based on earlier version from Ronnie which modified tdb; this one
is standalone).

When storing records in a tdb that has "automatic seqnum updates"
also check if the actual data for the record has changed or not.

If it has not changed at all, except for possibly the header,
this is likely just a dmaster migration operation in which case
we want to write the record to the tdb but we do not want the tdb
sequence number to be increased.

This resolves the problem of notify.tdb being thrashed under load:
the heuristic in smbd to only reread this when the sequence number
increases (rarely) breaks down.

Before, running nbench --num-progs=512 across 4 nodes, we saw numbers like:
 512      1496  118.33 MB/sec  execute 60 sec  latency 0.00 msec
And turning on latency tracking, this was typical in the logs:
 ctdbd: High latency 9380914.000000s for operation lockwait on database notify.tdb

After this commit:
  512      2451  143.85 MB/sec  execute 60 sec  latency 0.00 msec
And no more latency messages...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agonew version 1.0.112-7
Ronnie Sahlberg [Thu, 11 Feb 2010 05:49:48 +0000 (16:49 +1100)]
new version 1.0.112-7

14 years agoReduce loglevel for two eventscript related debug messages
Ronnie Sahlberg [Thu, 11 Feb 2010 01:00:43 +0000 (12:00 +1100)]
Reduce loglevel for two eventscript related debug messages

14 years agoReducing the log level for a debug message
Ronnie Sahlberg [Thu, 11 Feb 2010 00:54:46 +0000 (11:54 +1100)]
Reducing the log level for a debug message

              DEBUG(DEBUG_DEBUG,("pnn %u starting migration of %08x t\

14 years agoReduce the log level for two debug messages
Ronnie Sahlberg [Thu, 11 Feb 2010 00:49:48 +0000 (11:49 +1100)]
Reduce the log level for two debug messages

       DEBUG(DEBUG_DEBUG,("pnn %u dmaster response %08x\n", ctdb->pnn, ctdb_has
       DEBUG(DEBUG_DEBUG,("pnn %u dmaster request on %08x for %u from %u\n",

14 years agoAdd a variable CTDB_CHECK_SWAP_IS_NOT_USED="yes"
Ronnie Sahlberg [Thu, 11 Feb 2010 00:32:22 +0000 (11:32 +1100)]
Add a variable CTDB_CHECK_SWAP_IS_NOT_USED="yes"
to control whether or not to check if we are swapping, and produce
useful output into the logfile if we are.

For production systems with dedicated nas-heads we should never swap.
But for developer/test systems we often use smaller nondedicated systems where
we can no longer guarantee that we will not be using swap.

14 years agolower the loglevel for a debug message for redundant releases of public ips
Ronnie Sahlberg [Thu, 11 Feb 2010 00:19:08 +0000 (11:19 +1100)]
lower the loglevel for a debug message for redundant releases of public ips

14 years agoAdd a new variable : CTDB_NFS_SKIP_KNFSD_ALIVE_CHECK
Ronnie Sahlberg [Thu, 11 Feb 2010 00:09:39 +0000 (11:09 +1100)]
Add a new variable : CTDB_NFS_SKIP_KNFSD_ALIVE_CHECK
when set to "yes" this will skip checking if knfsd has hung or not.

bz59626

14 years agoevent scripts: add logging for low memory conditions
Rusty Russell [Tue, 9 Feb 2010 02:16:35 +0000 (12:46 +1030)]
event scripts: add logging for low memory conditions

We should never enter swap; if we do, show the memory state of the machine and the process list.  This will help us diagnose what caused the condition before it's too late and the box starts OOM-killing processes.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agonew version 1.0.112-6
Ronnie Sahlberg [Mon, 8 Feb 2010 21:33:24 +0000 (08:33 +1100)]
new version 1.0.112-6

14 years agoctdb: migrate to new dlinklist.h from Samba tridge/112-patches
Andrew Tridgell [Sun, 7 Feb 2010 08:02:06 +0000 (19:02 +1100)]
ctdb: migrate to new dlinklist.h from Samba

14 years agofixed printing of high latency
Andrew Tridgell [Fri, 5 Feb 2010 06:11:29 +0000 (17:11 +1100)]
fixed printing of high latency

14 years agoctdb: when we fill the client packet queue we need to drop the client
Andrew Tridgell [Thu, 4 Feb 2010 03:36:14 +0000 (14:36 +1100)]
ctdb: when we fill the client packet queue we need to drop the client

We can't just drop packets to the list, as those packets could be part
of the core protocol the client is using. This happens (for example)
when Samba is doing a traverse. If we drop a traverse packet then
Samba hangs indefinately. We are better off dropping the ctdb socket
to Samba.

14 years agoctdb: move ctdb_io.c to use TLIST_*() macros
Andrew Tridgell [Thu, 4 Feb 2010 03:14:18 +0000 (14:14 +1100)]
ctdb: move ctdb_io.c to use TLIST_*() macros

This will make large packet queues much more efficient

14 years agoutil: added TLIST_*() macros
Andrew Tridgell [Thu, 4 Feb 2010 03:13:49 +0000 (14:13 +1100)]
util: added TLIST_*() macros

The TLIST_*() macros are like the DLIST_*() macros, but take both a
head and tail pointer for the list. This means that adding an element
to the end of the list is efficient (it doesn't need to walk the
list).

We should move all uses of the DLIST_*() macros which use
DLIST_ADD_END() to use the TLIST_*() macros instead.

14 years agoWe only queued up to 1000 packets per queue before we start dropping
Ronnie Sahlberg [Wed, 3 Feb 2010 22:54:06 +0000 (09:54 +1100)]
We only queued up to 1000 packets per queue before we start dropping
packets, to avoid the queue to grow excessively if smbd has blocked.

This could cause traverse packets to become discarded in case the main
smbd daemon does a traverse of a database while there is a recovery
(sending a erconfigured message to smbd, causing an avalanche of unlock
messages to be sent across the cluster.)

This avalance of messages could cause also the tranversal message to be
discarded  causing the main smbd process to hang indefinitely waiting
for the traversal message that will never arrive.

Bump the maximum queue length before starting to discard messages from
1000 to 1000000 and at the same time rework the queueing slightly so we
can append messages cheaply to the queue instead of walking the list
from head to tail every time.

14 years agoDrop the debug level for logging fd creation to DEBUG_DEBUG
Ronnie Sahlberg [Wed, 3 Feb 2010 19:37:41 +0000 (06:37 +1100)]
Drop the debug level for logging fd creation to DEBUG_DEBUG

14 years agoVersion 1.0.112-5
Ronnie Sahlberg [Mon, 1 Feb 2010 21:03:37 +0000 (08:03 +1100)]
Version 1.0.112-5

14 years agotdb: fix an early release of the global lock that can cause data corruption
Volker Lendecke [Fri, 29 Jan 2010 17:21:09 +0000 (18:21 +0100)]
tdb: fix an early release of the global lock that can cause data corruption

There was a bug in tdb where the

                tdb_brlock(tdb, GLOBAL_LOCK, F_UNLCK, F_SETLKW, 0, 1);

(ending the transaction-"mutex") was done before the

                        /* remove the recovery marker */

This means that when a transaction is committed there is a window where another
opener of the file sees the transaction marker while the transaction committer
is still fully functional and working on it. This led to transaction being
rolled back by that second opener of the file while transaction_commit() gave
no error to the caller.

This patch moves the F_UNLCK to after the recovery marker was removed, closing
this window.

14 years agoversion 1.0.112-4
Ronnie Sahlberg [Thu, 21 Jan 2010 07:51:54 +0000 (18:51 +1100)]
version 1.0.112-4

14 years agoonnode: update algorithm for finding nodes file.
Martin Schwenke [Thu, 21 Jan 2010 02:40:03 +0000 (13:40 +1100)]
onnode: update algorithm for finding nodes file.

2 changes:

* If a relative nodes file is specified via -f or $CTDB_NODES_FILE but
  this file does not exist then try looking for the file in /etc/ctdb
  (or $CTDB_BASE if set).

* If a nodes file is specified via -f or $CTDB_NODES_FILE but this
  file does not exist (even when checked as per above) then do not
  fall back to /etc/ctdb/nodes ((or $CTDB_BASE if set).  The old
  behaviour was surprising and hid errors.

Signed-off-by: Martin Schwenke <martin@meltin.net>
14 years agoonnode - respect $CTDB_BASE rather than hard-coding /etc/ctdb.
Martin Schwenke [Thu, 21 Jan 2010 02:16:18 +0000 (13:16 +1100)]
onnode - respect $CTDB_BASE rather than hard-coding /etc/ctdb.

Signed-off-by: Martin Schwenke <martin@meltin.net>
14 years agoVersion 1.0.112-3
Ronnie Sahlberg [Wed, 20 Jan 2010 04:14:47 +0000 (15:14 +1100)]
Version 1.0.112-3

14 years agosource the nfs sysconfig file from the 61.nfstickles script
Ronnie Sahlberg [Tue, 19 Jan 2010 23:35:02 +0000 (10:35 +1100)]
source the nfs sysconfig file from the 61.nfstickles script

14 years agonew version 1.0.112-2
Ronnie Sahlberg [Wed, 13 Jan 2010 00:23:23 +0000 (11:23 +1100)]
new version 1.0.112-2

14 years agoMerge commit 'metze/master-for-ronnie'
Ronnie Sahlberg [Tue, 12 Jan 2010 20:01:40 +0000 (07:01 +1100)]
Merge commit 'metze/master-for-ronnie'

14 years agoserver: call event_add_fd at the end of ctdb_set_child_logging()
Stefan Metzmacher [Thu, 7 Jan 2010 12:29:09 +0000 (13:29 +0100)]
server: call event_add_fd at the end of ctdb_set_child_logging()

metze

14 years agoctdb_logging: simplify ctdb_fork_with_logging a lot and reduce the syscall usage
Stefan Metzmacher [Thu, 7 Jan 2010 12:47:46 +0000 (13:47 +0100)]
ctdb_logging: simplify ctdb_fork_with_logging a lot and reduce the syscall usage

metze

14 years agoNew version 1.0.112.
Martin Schwenke [Tue, 12 Jan 2010 10:07:45 +0000 (21:07 +1100)]
New version 1.0.112.

Signed-off-by: Martin Schwenke <martin@meltin.net>
14 years agoRevert "Use wbinfo --ping-dc isntead of wbingo -p sicne this is a more reliable way...
Martin Schwenke [Tue, 12 Jan 2010 10:02:44 +0000 (21:02 +1100)]
Revert "Use wbinfo --ping-dc isntead of wbingo -p sicne this is a more reliable way to determine if winbindd is in a useful state."

This reverts commit 7c95e56ba871a4e0cb893a5cb5d821e7ff6e6dd6.

wbinfo --ping-dc is proving too unreliable.

14 years agoRevert "events/50.samba: only use wbinfo --ping-dc if available"
Martin Schwenke [Tue, 12 Jan 2010 10:02:11 +0000 (21:02 +1100)]
Revert "events/50.samba: only use wbinfo --ping-dc if available"

This reverts commit 7b73834ba3ac197cc8a3020c111f9bb2c567e70b.

wbinfo --ping-dc is proving too unreliable.

14 years agoMerge commit 'origin/master'
Martin Schwenke [Thu, 7 Jan 2010 01:46:26 +0000 (12:46 +1100)]
Merge commit 'origin/master'

14 years agoNew version 1.0.111 ctdb-1.0.111
Ronnie Sahlberg [Fri, 18 Dec 2009 04:16:04 +0000 (15:16 +1100)]
New version 1.0.111

14 years agoeventscript: fix bug when script is aborted ctdb-1.0.110
Rusty Russell [Fri, 18 Dec 2009 03:43:09 +0000 (14:13 +1030)]
eventscript: fix bug when script is aborted

Another corner case when we terminate running monitor scripts to run
something else: logging can flush the output and we write to a NULL
pointer.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agoeventscript: remove cb_status, fix uninitialized bug when monitoring aborted
Rusty Russell [Fri, 18 Dec 2009 03:24:40 +0000 (13:54 +1030)]
eventscript: remove cb_status, fix uninitialized bug when monitoring aborted

(Reapplied with merge after accidental revert)

Previously we updated cb_status a each script finished.  Since we're storing
the status anyway, we can calculate it by iterating the scripts array
itself, providing clear and uniform behavior on all code paths.

In particular, this fixes a longstanding bug when we abort monitor
scripts to run some other script: the cb_status was uninitialized.  In
this case, we need to hand *something* to the callback; 0 might make
us go healthy when we shouldn't.  So we use the last status (normally,
this will be the just-saved current status).

In addition, we make the case of failing the first fork for the script
and failing other script forks the same: the error is returned via the
callback and saved for viewing through 'ctdb scriptstatus'.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agoMerge commit 'origin/master'
Martin Schwenke [Fri, 18 Dec 2009 03:44:25 +0000 (14:44 +1100)]
Merge commit 'origin/master'

14 years agoTest suite: Add an optimisation in the getvar test.
Martin Schwenke [Fri, 18 Dec 2009 03:43:45 +0000 (14:43 +1100)]
Test suite: Add an optimisation in the getvar test.

Signed-off-by: Martin Schwenke <martin@meltin.net>
14 years agoTest suite: allow settign of timeout triggers for all events not just monitor.
Martin Schwenke [Fri, 18 Dec 2009 03:42:58 +0000 (14:42 +1100)]
Test suite: allow settign of timeout triggers for all events not just monitor.

Signed-off-by: Martin Schwenke <martin@meltin.net>
14 years agoVersion 1.0.110
Ronnie Sahlberg [Fri, 18 Dec 2009 01:32:58 +0000 (12:32 +1100)]
Version 1.0.110

14 years agoeventscript: fix cleanup path when setting up script list
Rusty Russell [Fri, 18 Dec 2009 01:24:24 +0000 (11:54 +1030)]
eventscript: fix cleanup path when setting up script list

We shouldn't set ctdb->current_monitor until we set destructor: that's
what cleans it up.

Also, free state->scripts on no-scripts exit path: it's not a child of
state because we need it in the destructor.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agoserver: add set_close_on_exec() on more fds
Stefan Metzmacher [Thu, 17 Dec 2009 12:04:27 +0000 (13:04 +0100)]
server: add set_close_on_exec() on more fds

metze

14 years agoserver: fix fd leaks in the new logging code
Stefan Metzmacher [Thu, 17 Dec 2009 12:03:42 +0000 (13:03 +0100)]
server: fix fd leaks in the new logging code

metze

14 years agoversion 1.0.109 ctdb-1.0.109
Ronnie Sahlberg [Thu, 17 Dec 2009 04:49:01 +0000 (15:49 +1100)]
version 1.0.109

14 years agoeventscript: remove cb_status, fix uninitialized bug when monitoring aborted
Rusty Russell [Thu, 17 Dec 2009 04:08:15 +0000 (14:38 +1030)]
eventscript: remove cb_status, fix uninitialized bug when monitoring aborted

Previously we updated cb_status a each script finished.  Since we're storing
the status anyway, we can calculate it by iterating the scripts array
itself, providing clear and uniform behavior on all code paths.

In particular, this fixes a longstanding bug when we abort monitor
scripts to run some other script: the cb_status was uninitialized.  In
this case, we need to hand *something* to the callback; 0 might make
us go healthy when we shouldn't.  So we use the last status (normally,
this will be the just-saved current status).

In addition, we make the case of failing the first fork for the script
and failing other script forks the same: the error is returned via the
callback and saved for viewing through 'ctdb scriptstatus'.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agofix a conflict in the merge from rusty
Ronnie Sahlberg [Wed, 16 Dec 2009 21:18:04 +0000 (08:18 +1100)]
fix a conflict in the merge from rusty

Merge commit 'rusty/ctdb-no-setsched'

Conflicts:

server/ctdb_vacuum.c

14 years agoctdb: use mlockall, cautiously rusty/ctdb-no-setsched
Rusty Russell [Wed, 16 Dec 2009 10:27:20 +0000 (20:57 +1030)]
ctdb: use mlockall, cautiously

We don't want ctdb stalling due to paging; this can be far worse than
scheduling delays.  But if we simply do mlockall(MCL_FUTURE), it
increases the risk that mmap (ie. tdb open) or malloc will fail,
causing us to abort.

This patch is a compromise: we mlock all current pages (including
10k of future stack for expansion) and then relock when a client
asks us to open a TDB.  We warn, but don't exit, if it fails.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agoRemove RT priority, use niceness.
Rusty Russell [Wed, 16 Dec 2009 08:56:22 +0000 (19:26 +1030)]
Remove RT priority, use niceness.

1) It's buggy.  Code needs to be carefully written (ie. no busy
   loops) to handle running with it, and we fork and run scripts.[1]

2) It makes debugging harder.  If ctdbd loops (as has happened recently)
   it can be extremely hard to get in and see what's happening.  We've already
   seen the valgrind hacks.

3) We have seen recent scheduler problems.  Perhaps they are unrelated,
   but removing this very unusual setup is unlikely to hurt.

4) It doesn't make anything faster.  Under all but the most perverse of
   circumstances, 99% of the cpu gives the same performance as 100%, and
   we will always preempt normal processes anyway.

[1] I made this worse in 0fafdcb8d353 "eventscript: fork() a child for
    each script" by removing the switch_from_server_to_client() which
    restored it, but even that was only for monitor scripts.  Others were
    run with RT priority.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agoAdd --valgringing flag instead of --nosetsched
Rusty Russell [Wed, 16 Dec 2009 10:29:15 +0000 (20:59 +1030)]
Add --valgringing flag instead of --nosetsched

The do_setsched was being tested for whether to mmap tdbs: let's make it
explicit.  We can also happily move the kill-child eventscript hack under
this flag.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
14 years agofix conflict in merge from metze
Ronnie Sahlberg [Wed, 16 Dec 2009 07:34:40 +0000 (18:34 +1100)]
fix conflict in merge from metze

Merge commit 'metze/master-tdb-check'

Conflicts:

server/ctdb_vacuum.c

14 years agoctdb: pass TDB_DISALLOW_NESTING to all tdb_open/tdb_wrap_open calls
Stefan Metzmacher [Fri, 20 Nov 2009 20:17:59 +0000 (21:17 +0100)]
ctdb: pass TDB_DISALLOW_NESTING to all tdb_open/tdb_wrap_open calls

metze

Signed-off-by: Stefan Metzmacher <metze@samba.org>
14 years agodoc: regenerate manpages metze/master-tdb-check
Stefan Metzmacher [Mon, 7 Dec 2009 12:02:59 +0000 (13:02 +0100)]
doc: regenerate manpages

metze

14 years agodoc: fix docbook warnings for ctdb.1 and onnode.1 manpages
Stefan Metzmacher [Tue, 8 Dec 2009 11:28:38 +0000 (12:28 +0100)]
doc: fix docbook warnings for ctdb.1 and onnode.1 manpages

metze

14 years agodoc/ctdb.1: update example "ctdb listvars" output
Stefan Metzmacher [Wed, 9 Dec 2009 10:29:52 +0000 (11:29 +0100)]
doc/ctdb.1: update example "ctdb listvars" output

metze

14 years agodoc/ctdb.1: make clear the database is specified by name for "ctdb backupdb"
Stefan Metzmacher [Tue, 8 Dec 2009 11:44:13 +0000 (12:44 +0100)]
doc/ctdb.1: make clear the database is specified by name for "ctdb backupdb"

metze

14 years agodoc/ctdb.1: document "ctdb getdbstatus <dbname>"
Stefan Metzmacher [Tue, 8 Dec 2009 11:43:33 +0000 (12:43 +0100)]
doc/ctdb.1: document "ctdb getdbstatus <dbname>"

metze

14 years agodoc/ctdb.1: add "See also" for ctdb getdbmap
Stefan Metzmacher [Mon, 7 Dec 2009 09:19:20 +0000 (10:19 +0100)]
doc/ctdb.1: add "See also" for ctdb getdbmap

metze

14 years agodoc/ctdb.1: document "ctdb dumpdbbackup <file>"
Stefan Metzmacher [Tue, 8 Dec 2009 11:08:27 +0000 (12:08 +0100)]
doc/ctdb.1: document "ctdb dumpdbbackup <file>"

metze

14 years agodoc/ctdb.1: document -Y output fot ctdb getdbmap
Stefan Metzmacher [Mon, 7 Dec 2009 09:18:39 +0000 (10:18 +0100)]
doc/ctdb.1: document -Y output fot ctdb getdbmap

metze

14 years agodoc/ctdb.1: document UNHEALTHY for "ctdb getdbmap"
Stefan Metzmacher [Mon, 7 Dec 2009 09:10:05 +0000 (10:10 +0100)]
doc/ctdb.1: document UNHEALTHY for "ctdb getdbmap"

metze

14 years agodoc/ctdb.1: document "ctdb wipedb"
Stefan Metzmacher [Mon, 7 Dec 2009 09:00:52 +0000 (10:00 +0100)]
doc/ctdb.1: document "ctdb wipedb"

metze

14 years agoconfig: add CTDB_MAX_PERSISTENT_CHECK_ERRORS option
Stefan Metzmacher [Mon, 7 Dec 2009 09:53:31 +0000 (10:53 +0100)]
config: add CTDB_MAX_PERSISTENT_CHECK_ERRORS option

metze

14 years agoconfig: try to use tdbtool <tdb> check instead of tdbdump for persistent db checks
Stefan Metzmacher [Mon, 7 Dec 2009 09:46:10 +0000 (10:46 +0100)]
config: try to use tdbtool <tdb> check instead of tdbdump for persistent db checks

metze

14 years agoctdb: print out some hints how to debug a "ctdb catdb" failure
Stefan Metzmacher [Mon, 7 Dec 2009 08:57:45 +0000 (09:57 +0100)]
ctdb: print out some hints how to debug a "ctdb catdb" failure

metze

14 years agoctdb: add machinereadable output fot "ctdb -Y getdbmap"
Stefan Metzmacher [Mon, 7 Dec 2009 08:23:02 +0000 (09:23 +0100)]
ctdb: add machinereadable output fot "ctdb -Y getdbmap"

metze

14 years agoctdb: disallow "ctdb backupdb" on unhealthy databases
Stefan Metzmacher [Mon, 7 Dec 2009 08:22:02 +0000 (09:22 +0100)]
ctdb: disallow "ctdb backupdb" on unhealthy databases

metze

14 years agoclient: add "ctdb dumpdbbackup <filename>"
Stefan Metzmacher [Fri, 4 Dec 2009 14:24:23 +0000 (15:24 +0100)]
client: add "ctdb dumpdbbackup <filename>"

metze

14 years agoclient: make ctdb_dumpdb_record() public
Stefan Metzmacher [Fri, 4 Dec 2009 14:23:56 +0000 (15:23 +0100)]
client: make ctdb_dumpdb_record() public

metze