** Description changed: + [Impact] + + resource-agent uses crm_mon to determine node state, however crm_mon's + output format differs on bionic and focal which results in invalid + status reporting for focal hosts. This has resulted in, for example, + failure when migrating a bionic pgsql node to focal. + + + [Test Case] + TBD + + + [Regression Potential] + + Since this changes the node status reporting for resource-agents, watch + for anything depending on the status information for managing nodes such + as issues upgrading software or migrating to new ubuntu releases, or + such as web dashboards, etc. + + + [Fix] + + Upstream appears to have encountered and fixed the issue by adjusting + the regex to cover the new line format. This corresponds to the + following upstream commit: + + https://github.com/ClusterLabs/resource-agents/commit/2a56d5b2 + + + [Discussion] + + In groovy's 4.6.1, the issue is fixed a bit differently, by switching to + use of crm_mon1200 XML format + + + [Original Report] + There is a bug in the resource agent's node_exist function. It looks at crm_mon output, which has changed between bionic and focal. The result is that the 'pgsql-status' and 'pgsql-data-status' attributes are missing from crm status --as-xml output on focal. Here is the focal output: http://paste.ubuntu.com/p/RrFnPJHWCS/ Here is the bionic output: http://paste.ubuntu.com/p/NrvqtjJD5r/ This is the node_exist function: node_exist() { - print_crm_mon | tr '[A-Z]' '[a-z]' | grep -q "^node $1" + print_crm_mon | tr '[A-Z]' '[a-z]' | grep -q "^node $1" } It's looking for a line starting with "Node <nodename>". That works in bionic, but in focal, it's " * Node <nodename>". is_online has the same problem: is_node_online() { - print_crm_mon | tr '[A-Z]' '[a-z]' | grep -e "^node $1 " -e "^node $1:" | grep -q -v "offline" + print_crm_mon | tr '[A-Z]' '[a-z]' | grep -e "^node $1 " -e "^node $1:" | grep -q -v "offline" } It looks like this is the upstream: https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/pgsql It's fixed there; they look at crm_mon xml output instead. I tested with changing the regex to "node $1:" and it works fine. that could be tightened up a bit to just match "node <nodename>" or " * node <nodename>", but I'm not sure if we shouldn't just pull in something from upstream so I haven't spent time refining that. this is on focal with resource-agents 1:4.5.0-2ubuntu2
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1900016 Title: pgsql resource agent uses regexes for old crm_mon format, breaks pgsql-status and pgsql-data-status attributes To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/resource-agents/+bug/1900016/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
