Hi, 

I've been fighting with the OCF DRBD script returning me success when trying 
to get a resource secondary, when it failed : the drbdadm secondary command 
fails (returns 11) and the drbd script returns 0. It's with heartbeat 2.1.4.

I think I've located the culprit :

do_drbdadm() { 
        local cmd="$DRBDADM -c $DRBDCONF $*" 
        ocf_log debug "$RESOURCE: Calling $cmd" 
        local cmd_out=$($cmd 2>&1) 
        ret=$? 
        # Trim the garbage drbdadm likes to print when using the node 
        # override feature: 
        local cmd_ret=$(echo $cmd_out | sed -e 's/found __DRBD_NODE__.*<<//;') 
        if [ $ret -ne 0 ]; then 
                ocf_log err "$RESOURCE: Called $cmd" 
                ocf_log err "$RESOURCE: Exit code $ret" 
                ocf_log err "$RESOURCE: Command output: $cmd_ret" 
        else 
                ocf_log debug "$RESOURCE: Exit code $ret" 
                ocf_log debug "$RESOURCE: Command output: $cmd_ret" 
        fi 
        echo $cmd_ret 
        return $ret 
}


        local cmd_out=$($cmd 2>&1) 
        ret=$? 

In this case $? always is 0. As I don't know sh that much (and hate it a 
lot :) ), I've been trying to find the reason, and as soon as I remove 
the 'local', the return code is transmitted to $? again.

This is quite an important problem I think, because whenever heartbeat fails 
to do a drbd command, it thinks it has worked (instead of retrying).
_______________________________________________
Linux-HA mailing list
[email protected]
http://lists.linux-ha.org/mailman/listinfo/linux-ha
See also: http://linux-ha.org/ReportingProblems

Reply via email to