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 4Oyvind Albrigtsen
2023-09-06 09:43:59 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