Bug 1904465

Summary: ocf:heartbeat:mysql is sending stderr to /dev/null
Product: Red Hat Enterprise Linux 8 Reporter: Chad Newsom <cnewsom>
Component: resource-agentsAssignee: Oyvind Albrigtsen <oalbrigt>
Status: CLOSED ERRATA QA Contact: cluster-qe <cluster-qe>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 8.4CC: agk, cfeist, cluster-maint, fdinitto, jobaker, knickel, mjuricek, paul.whitaker, sbradley, troy.engel
Target Milestone: rcKeywords: Triaged
Target Release: 8.10   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: resource-agents-4.9.0-48.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1771697
: 2110038 (view as bug list) Environment:
Last Closed: 2024-05-22 09:14:39 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: 2110038    

Description Chad Newsom 2020-12-04 14:48:08 UTC
Description of problem:

The 'mysql_common_start()' function within the file "/usr/lib/ocf/lib/heartbeat/mysql-common.sh" is utilized by pacemaker to start 'ocf:heartbeat:mysql' resources. There are situations when MySQL fails to start and the error is sent to standard error/standard out and is not logged into the MySQL error log. The problem is pacemaker isn't seeing the standard error when the 'ocf:heartbeat:mysql' resource fails to start because the 'ocf:heartbeat:mysql' resource itself is sending all standard error and standard output to '/dev/null':

######
    ${OCF_RESKEY_binary} --defaults-file=$OCF_RESKEY_config \
    --pid-file=$OCF_RESKEY_pid \
    --socket=$OCF_RESKEY_socket \
    --datadir=$OCF_RESKEY_datadir \
    --log-error=$OCF_RESKEY_log \
    --user=$OCF_RESKEY_user $OCF_RESKEY_additional_parameters \
    $mysql_extra_params >/dev/null 2>&1 &
    pid=$!
######

The above snippet is from the 'mysql_common_start()' function within the file "/usr/lib/ocf/lib/heartbeat/mysql-common.sh". You can see that at the end of the startup line that all standard error is redirecting to standard out, and then that is sent to '/dev/null'.

The customer had System Admins spend hours trying to track down why a MySQL resource wasn't starting on a PCS Cluster, but the real error was being lost to '/dev/null'. The error was a very basic configuration issue, and MySQL was logging the error to standard error. The output from MySQL was telling you exactly what was wrong, however they weren't able to capture this error because it was sent to '/dev/null', resulting in hours of troubleshooting an issue that should have taken less than a minute to resolve.


Version-Release number of selected component (if applicable):

resource-agents-4.1.1-68.el8.x86_64

How reproducible:

Anytime an 'ocf:heartbeat:mysql' resource produces standard error/standard out. 


Steps to Reproduce:

Start the mysql resource in any condition that would produce stderr/stdout

Actual results:

stderr goes to /dev/null


Expected results:


The ask is that the output from the attempt to start the 'ocf:heartbeat:mysql' resource be sent anywhere except '/dev/null'. It can go to a logfile, to syslog, or anywhere you choose, just not '/dev/null' as this makes troubleshooting for System Administrators very difficult.

Comment 4 Oyvind Albrigtsen 2023-09-06 09:43:59 UTC
https://github.com/ClusterLabs/resource-agents/pull/1887

Comment 13 errata-xmlrpc 2024-05-22 09:14:39 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 (Moderate: resource-agents security and bug fix update), and where to find the updated
files, follow the link below.

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

https://access.redhat.com/errata/RHSA-2024:2952