Bug 2110038 - ocf:heartbeat:mysql is sending stderr to /dev/null
Summary: ocf:heartbeat:mysql is sending stderr to /dev/null
Keywords:
Status: ASSIGNED
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: resource-agents
Version: 9.2
Hardware: Unspecified
OS: Linux
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Oyvind Albrigtsen
QA Contact: cluster-qe
URL:
Whiteboard:
Depends On: 1904465
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-07-22 20:00 UTC by Joshua Baker
Modified: 2023-08-10 15:41 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of: 1904465
Environment:
Last Closed:
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker KCSOPP-1707 0 None None None 2022-07-22 20:05:13 UTC
Red Hat Issue Tracker RHELPLAN-128775 0 None None None 2022-07-22 20:01:29 UTC
Red Hat Knowledge Base (Solution) 4741111 0 None None None 2022-07-22 20:05:13 UTC

Description Joshua Baker 2022-07-22 20:00:34 UTC
+++ This bug was initially created as a clone of Bug #1904465 +++

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.10.0-9.el9_0.3.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.


Note You need to log in before you can comment on or make changes to this bug.