Bug 876908

Summary: corosync-objctl operations return Error reloading DB 11
Product: Red Hat Enterprise Linux 6 Reporter: Jaroslav Kortus <jkortus>
Component: corosyncAssignee: Jan Friesse <jfriesse>
Status: CLOSED ERRATA QA Contact: Cluster QE <mspqa-list>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 6.4CC: jpallich, sdake
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: corosync-1.4.1-12.el6 Doc Type: Bug Fix
Doc Text:
Cause: Running corosync-objctl with parameter Consequence: Error reloading DB 11. Reloading was added by mistake to fix bz#773720. Result WAS to trigger change, but also to trigger reload of configuration file. This is ok for corosync/openais itself, because no plugin failed. Sadly, with cman preconfig plugin loaded, this results in error (because version number of file was not changed). Fix: Remove reload and properly handle change of logging object in confdb. Result: No longer "Error reloading DB 11.", but it's perfectly possible to change logging level in runtime.
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-21 07:51:11 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 881827    
Attachments:
Description Flags
Proposed patch - part 1 - Track changes for confdb logging object
none
Proposed patch - part 2 - Don't call reload on corosync-objctl actions none

Description Jaroslav Kortus 2012-11-15 09:27:52 UTC
Description of problem:
corosync-objctl operations return Error reloading DB 11:
$ corosync-objctl | head -n5
cluster.name=STSRHTS4029
cluster.config_version=1
cluster.cman.nodename=marathon-03c1-node01
cluster.cman.cluster_id=52570
cluster.totem.token=3000

$ corosync-objctl cluster.totem.token
Error reloading DB 11

$ corosync-objctl -c cluster.testkey
Error reloading DB 11

$ getenforce 
Permissive


Version-Release number of selected component (if applicable):
corosync-1.4.1-11.el6.x86_64

How reproducible:
always

Steps to Reproduce:
1. setup cman cluster
2. corosync-objctl -c cluster.testkey
3.
  
Actual results:
Error reloading DB 11 on almost any operation (create, update, show...)

Expected results:
values returned, updated, shown as before

Additional info:

Comment 1 Jan Friesse 2012-11-19 13:35:53 UTC
Created attachment 647757 [details]
Proposed patch - part 1 - Track changes for confdb logging object

This makes possible to track changes in logging object (and it's
sub objects) for changes, so reload is no longer needed.

Comment 2 Jan Friesse 2012-11-19 13:36:50 UTC
Created attachment 647758 [details]
Proposed patch - part 2 - Don't call reload on corosync-objctl actions

confdb reload is used only for reloading of file, not for triggering
changes.

Comment 3 Jan Friesse 2012-11-19 13:42:38 UTC
"Unit test":
Unit test results:

corosync.conf snippet:

logging {
    debug: on
....

post patch:

[root@rhel6-node2 coro]# corosync -f
Apr 24 08:05:14 corosync [MAIN  ] Corosync Cluster Engine ('1.4.3-dirty'): started and ready to provide service.
.... lots of log ....
Apr 24 08:05:14 corosync [TOTEM ] releasing messages up to and including 18

[root@rhel6-node2 ~]# corosync-objctl |grep logging
...
logging.debug=on
...

notice in the logs (debugging output):

Apr 24 08:06:15 corosync [CONFDB] lib_init_fn: conn=0x145ce40
Apr 24 08:06:15 corosync [CONFDB] exit_fn for conn=0x145ce40

[root@rhel6-node2 ~]# corosync-objctl -w logging.debug=off
[root@rhel6-node2 ~]# 

[root@rhel6-node2 ~]# corosync-objctl |grep logging
....
logging.debug=off
....

and there are no more CONFDB lib_init/exit_fn entries.

NOTE I used CONFDB in the example but it applies to all logging.

This works with corosync standalone and also with cman.

Comment 7 Jaroslav Kortus 2012-11-29 17:48:37 UTC
$ corosync-objctl -n qa.test1=1
$ corosync-objctl -w qa.test1=2
$ corosync-objctl -a | grep -E ^qa
qa.test1=2
$ corosync-objctl -d qa.test1
$ corosync-objctl -a | grep -E ^qa
qa
$ corosync-objctl -d qa
$ corosync-objctl -a | grep -E ^qa

Operations do work as expected now. Thanks for quick fix.
corosync-1.4.1-12.el6.x86_64

Comment 9 errata-xmlrpc 2013-02-21 07:51:11 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2013-0497.html