On Fri, Dec 14, 2012 at 11:49:15AM +0100, Michal Fiala wrote:
> Hallo,
>
> we are using drbd in corosync/pacemaker cluster. Corosync is logging via
> syslog (to_logfile: no; to_syslog: yes; syslog_facility: local0; debug:
> on). OCF drbd script is using function do_cmd() to execute commands,
> such as drbdadm primary $device. But function do_cmd does not capture
> stderr. If something goes wrong, you can see just return code in log,
> not stderr output, which describes what was wrong.
>
> from do_cmd() in /usr/lib/ocf/resource.d/linbit/drbd
> ...
> cmd_out=$( "$@" )
> ...
>
> OCF API defines function ocf_run(), which is very similar to do_cmd(),
> but solves this problem
>
> from ocf_run() in /usr/lib/ocf/lib/heartbeat/ocf-shellfuncs
> ...
> output=`"$@" 2>&1`
> ...
>
> Is there a way how to capture stderr from
> /usr/lib/ocf/resource.d/linbit/drbd? I can simply patch ocf script, or
> better this could be a global, permanent fix from developers.
We deliberately chose to do it this way.
Besides the drbd.ocf predates ocf_run(), I think,
and is supposed to also work on clusters not providing this.
The cluster-glue lrmd used to capture both stdout and stderr,
and logged it accordingly.
The pacemaker 1.1.8 rewritten-from-scratch lrmd
apparently does not (yet).
If you "fix" our do_cmd() in the way you propose to,
you'll break the drbd ocf resource agent,
because we use it in nested ways: X=$(do_cmd something else),
and expect *exactly* the stdout of somthing else there.
So don't do that.
If anything, this needs to be fixed in the rewritten-from-scratch
pacemaker lrmd.
Lars
--
: Lars Ellenberg
: LINBIT | Your Way to High Availability
: DRBD/HA support and consulting http://www.linbit.com
DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
__
please don't Cc me, but send to list -- I'm subscribed
_______________________________________________
drbd-user mailing list
[email protected]
http://lists.linbit.com/mailman/listinfo/drbd-user