In some cases, the syslog() call may block. If this happened, the AIS worker
thread would block waiting on the syslog() call. However, the worker thread
is still holding a logsys mutex, which is needed to enqueue any more log
messages from the other AIS threads. So the main AIS thread blocks waiting
on the logsys mutex. This can then cause aisexec on other nodes to detect
the node as leaving the cluster.
Author: Tim Beale <tim.beale@alliedtelesis.co.nz>
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1665 fd59a12c-fef9-0310-b244-a6a79926bd2f
confdb subsystems.
This is useful to provide atomic counters (ag handle numbers) for
long-running (though not persistent) connections. It's not currently
possible via confdb to atomically get a new number from objdb due to the
lack of locking. Doing it via increment operations in the IPC thread
provides enough atomicity to make it useful. Fabio has already
identified a use for these calls.
It could also provide some form of basic co-operative locking mechanism
for IPC-using processes (not direct objdb calls).
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1662 fd59a12c-fef9-0310-b244-a6a79926bd2f
the confdb library to use the new find_create/find_next/find_destroy API
calls instead.
I've kept the libcondfb API the same as before with the single change of
adding a confdb_object_find_destroy to tidy up the find handle after
use. If you don't call this then libcondfb will do it for you when
confdb_finalize is called.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1660 fd59a12c-fef9-0310-b244-a6a79926bd2f
When making my_proc_list smaller, ensure that the
now non-used entries are zero-ed out. There are some suspect
assert's that assume that there is always 2 entries in the list.
These fail when my_proc_list is reduced to 1 entry (and the
valid [0] entry is the same as the 'unused' [1] entry).
Author: Mark Wutzke <mark.wutzke@alliedtelesis.co.nz>
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1659 fd59a12c-fef9-0310-b244-a6a79926bd2f
Cause:
As part of its exit procedure, ais cancels its worker thread then manually
processes any outstanding items that were still in the worker thread's queue.
The worker thread has a low priority so normally it does not execute any
further before ais finishes exiting, but if the main thread's exiting is
delayed for any reason, there is a chance the worker thread could execute and
try to process items which have already been processed and freed by the main
thread - often leading to the worker thread seeing NULL data and ultimately
causing a segmentation fault.
Fix:
Modified worker_thread_group_exit() so it does a pthread_join() after the
pthread_cancel() call, so that the worker thread always shuts down cleanly
before the main thread does its cleanup.
Author: Author: Mark McKinstry <mark.mckinstry@alliedtelesis.co.nz>
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1658 fd59a12c-fef9-0310-b244-a6a79926bd2f
Display strings safely, even if they are invalid, e.g. data in a received
message was corrupted.
Author: Tim Beale <tim.beale@alliedtelesis.co.nz>
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1657 fd59a12c-fef9-0310-b244-a6a79926bd2f
This patch makes it possible to override the following #defines:
MESSAGE_SIZE_MAX
MESSAGE_QUEUE_MAX
SIZEQUEUE
FLOW_CONTROL_ENTRIES_ENABLE
If MESSAGE_SIZE_MAX is defined as 1024*64 (64K) and
MESSAGE_QUEUE_MAX defined as 512 you can change corosync's
memory footprint from ~48M to ~8M
So if you define MESSAGE_QUEUE_MAX, the queue size will
not be based on the message size any more.
To use this define the defines on the command line:
make CFLAGS="-DMESSAGE_SIZE_MAX=1024*64 -DMESSAGE_QUEUE_MAX=512"
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1656 fd59a12c-fef9-0310-b244-a6a79926bd2f
sq.h
- sq_items_release(): When clearing the items_inuse array, ensure that
all of the memory is cleared. items_inuse is a uint array, not a
byte array.
Author: Mark Wutzke <markw@alliedtelesis.co.nz>
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1655 fd59a12c-fef9-0310-b244-a6a79926bd2f
Use a 2 phase "commit" operation:
1) Invoke verifyconfig that should catch the errors before the reload operation
2) Invoke reloadconfig that performs the operation and should _never_ fail
Implementation note: if step 2 fails, there is no fall back at the moment.
Fix the IPC table for confdb:
MESSAGE_REQ_CONFDB_XPATH_EVAL_EXPRESSION = 12 was added to include/ipc_confdb.h
without an associated call. Thanks Chrissie for spotting this.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1629 fd59a12c-fef9-0310-b244-a6a79926bd2f
logsys_config_priority_set lacked a check for logsys_single_id that
left logsys_subsys_id uninitialized.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1624 fd59a12c-fef9-0310-b244-a6a79926bd2f
- objctl is now called corosync-objctl
- keygen has been renamed corosync-keygen
- install corosync-cfgtool as part of the standard tools now
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1623 fd59a12c-fef9-0310-b244-a6a79926bd2f