Product SiteDocumentation Site

4.31. corosync

Updated corosync packages that fix multiple bugs and add various enhancements are now available for Red Hat Enterprise Linux 6.
The corosync packages provide the Corosync Cluster Engine and C Application Programming Interfaces (APIs) for Red Hat Enterprise Linux cluster software.
Bug Fixes
BZ#677583
Prior to this update, the corosync-blackbox command could, under certain circumstances, produce a backtrace in the output and consequently terminate with a segmentation fault. With this update, Corosync creates correct fdata files and also corosync-fplay is more resistant when dealing with incorrect fdata files.
BZ#677583
Prior to this update, cpg did not use the "left_nodes" field in the downlist message. As a consequence, a node could miss a configuration change and report larger old_members than expected if one node was paused. This update modifies the downlist so that the "left_nodes" field is used. Now, the membership events are correct.
BZ#692620
Prior to this update, cpg did not use the "left_nodes" field in the downlist message. As a consequence, a node could miss a configuration change and report larger old_members than expected if one node was paused. This update modifies the downlist so that the "left_nodes" field is used. Now, the membership events are correct.
BZ#696883
Prior to this update, running Corosync could cause a segmentation fault on multiple nodes when executed via CMAN. This update modifies the code so that executing Corosync via CMAN no longer causes segmentation faults with the pacemaker test suite.
BZ#696887
Prior to this update, the reference counting on the configuration server in Corosync was incorrect. As a consequence, terminating the corosync-cfgtool -r command before completing caused a segmentation fault. This update adds the correct reference counting for each architecture. Now, Corosync no longer encounters segmentation faults in this situation.
BZ#707860
Prior to this update, Corosync could terminate with a segmentation fault if it ran out of available open files. This update handles the maximum number of open files more gracefully. Now, Corosync no longer crashes when going over open file limits.
BZ#707867
Prior to this update, corosync-objctl could not create a new object/key and display double or float values. This update adds float and double support to corosync-objctl. Now, corosync-objctl can display object values with double or float types.
BZ#707873
Prior to this update, Corosync could terminate with a segmentation fault if it encountered a negative value for the message type on systems where char is signed. This update improves the check of the message type for incoming messages.
BZ#707875
Prior to this update, an error message was wrongly displayed if files in the service.d directory differed from the service key. With this update, Corosync longer checks for sub parameters in files in the service.d directory. Now, files in service.d directory can contain every possible configuration option.
BZ#709758
Prior to this update, Corosync used a spinlock around I/O operations. As a consequence, Corosync consumed an extremely high portion of the central processing unit (CPU) when running a large amount of inter-process communication (IPC) operations because the spinlocks would spin during I/O. This update replaces the spinlock with a mutual exclusion (mutex), which releases the processor from spinning but enforces correct behavior.
BZ#712115
Prior to this update, an incorrect mutex in the internal confdb data storage system could, under certain circumstances, cause Corosync to terminate with a segmentation fault. This update corrects the mutex and objdb API iteration no longer causes Corosync to terminate with a segmentation fault.
BZ#712188
Prior to this update, Corosync became locked with contrived test cases when the tracking functionality of the internal object database was enabled if it was under heavy load. This update modifies Corosync so that the tracking functionality under heavy load no longer causes Corosync to lock up.
BZ#725058
Prior to this update, retransmit list errors could occur on slower hardware due to high multicast traffic and slow CPU usage. This update processes the multicast buffer queue more frequently and retransmit errors are now less probable.
BZ#732698
Prior to this update, Corosync sometimes terminated unexpectedly when Corosync ran the cman_tool join and cman_tool leave commands in a loop. This update modifies the code so that no more segmentation faults occur in such situations.
Enhancements
BZ#529136
Prior to this update, the protocol in Corosync unnecessarily copied memory on AMD64 and EM64T architectures to align data structures for architectures which do not handle alignment correctly. As a consequence, the utilization of the central processing unit (CPU) was increased. This update can conditionally avoid copies on unaligned safe architectures such as Intel 80386, AMD64, and EM64T architectures. Now the CPU utilization is reduced by around 20%.
BZ#599327
Prior to this update, no diagnostic message was available when the multicast was blocked. As a consequence, each partition lost quorum which never remerged. This update displays a diagnostic warning that the node can not exit the GATHER state when a local NIC (network interface card) fault occurs or the firewall prevents totem from forming a cluster. In addition, the runtime.totem.pg.mrp.srp.firewall_enabled_or_nic_failure key is now set to 1.
BZ#667652
Prior to this update, fenced nodes where not safely powered up due to issues with the boot sequence. As a consequence, users had to skip cluster services at boot to avoid problems such as long response times and fences in two-node clusters. With this update, setting the nocluster boot parameter prevents Corosync to start automatically.
BZ#688260
Prior to this update, configuring two rings with different IP subnets only duplicated the IP address data of one ring. This update adds support for the redundant ring functionality to Corosync as a Technology Preview.
BZ#707876
Prior to this update, the corosync init script did not depend on syslog. As a consequence, syslog logging did not work if the user turned off syslog. This update adds syslog as a dependency to the init script. Now, logging works in all cases.
BZ#722469
Prior to this update, configuring two rings with different IP subnets only duplicated the IP address data of one ring. This update adds support for the redundant ring functionality to Corosync as a Technology Preview.
All corosync users are advised to upgrade to these updated packages, which fix these bugs and add these enhancements.
Updated corosync packages that fix several bugs are now available for Red Hat Enterprise Linux 6.
The corosync packages provide the Corosync Cluster Engine and C Application Programming Interfaces (APIs) for Red Hat Enterprise Linux cluster software.

Bug Fixes

BZ#726608
Previously, under heavy traffic, receive buffers sometimes overflowed, causing loss of packets. Consequently, retransmit list error messages appeared in the log files. This bug has been fixed, incoming messages are now processed more frequently, and the retransmit list error messages no longer appear in the described scenario.
BZ#727962
Previously, when a combination of a lossy network and a large number of configuration changes was used with corosync, corosync sometimes terminated unexpectedly. This bug has been fixed, and corosync no longer crashes in the described scenario.
BZ#734997
Prior to this update, when corosync ran the "cman_tool join" and "cman_tool leave" commands in a loop, corosync sometimes terminated unexpectedly. This bug has been fixed, and corosync no longer crashes in the described scenario.
All users of corosync are advised to upgrade to these updated packages, which fix these bugs.