Hi Dejan,
   yes, the existance of master_log_file is now checked since reset 
slave doesn't clear master_host.

Regards,

Yves

Le 2012-05-18 12:00, Dejan Muhamedagic a écrit :
> Hi Yves,
>
> On Fri, May 18, 2012 at 11:39:14AM -0400, Yves Trudeau wrote:
>> Hi Dejan,
>>    here's the patch for Raoul comments.  The patch is over
>> git://github.com/ClusterLabs/resource-agents.git  commit bc1991fd0e
>>
>> commit message:
>>
>> Better reset slave handling and cleanup for get_slave_info
>
> OK. What is the relation between this patch and the pull request
> proposed by bmildren in github (if any)? Has the handling of this
> changed with your previous patch?
>
> Thanks,
>
> Dejan
>
>>
>> Regards,
>>
>> Yves
>>
>> Le 2012-05-18 11:13, Dejan Muhamedagic a écrit :
>>> On Fri, May 18, 2012 at 10:08:54AM -0400, Yves Trudeau wrote:
>>>> Hi Raoul and Dejan,
>>>>    I completely forgot about this one but I am wondering about the
>>>> impacts.  I have many setups in production and none reported any
>>>> problem related to this.  The fix pretty easy though, Dejan, is it
>>>> too late to submit a patch?
>>>
>>> No, if the patch is fine. Up to you. It's very mysql-specific,
>>> cannot offer much help.
>>> _______________________________________________________
>>> Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org
>>> http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
>>> Home Page: http://linux-ha.org/
>>>
>
>> --- mysql.bc1991fd0e 2012-05-18 11:30:51.358422574 -0400
>> +++ resource-agents-prm/heartbeat/mysql      2012-05-18 11:32:38.418420112 
>> -0400
>> @@ -413,23 +413,27 @@
>>
>>       # Check whether this machine should be slave
>>       if ! ocf_is_ms || ! get_read_only; then
>> -        return 1;
>> +        return 1
>>       fi
>> +
>> +    get_slave_info
>> +    rc=$?
>>
>> -    tmpfile=`mktemp ${HA_RSCTMP}/is_slave.${OCF_RESOURCE_INSTANCE}.XXXXXX`
>> -
>> -    $MYSQL $MYSQL_OPTIONS_REPL \
>> -    -e 'SHOW SLAVE STATUS\G'>  $tmpfile
>> -
>> -    # "SHOW SLAVE STATUS" returns an empty set if instance is not a
>> -    # replication slave
>> -    if [ -s $tmpfile ]; then
>> -        rm -f $tmpfile
>> -        return 0
>> +    if [ $rc -eq 0 ]; then
>> +       # show slave status is not empty
>> +       # Is there a master_log_file defined?  (master_log_file is deleted
>> +       # by reset slave
>> +       if [ "$master_log_file" ]; then
>> +          return 0
>> +       else
>> +          return 1
>> +       fi
>> +    else
>> +       # "SHOW SLAVE STATUS" returns an empty set if instance is not a
>> +       # replication slave
>> +       return 1
>>       fi
>> -
>> -    rm -f $tmpfile
>> -    return 1
>> +
>>   }
>>
>>   parse_slave_info() {
>> @@ -440,31 +444,36 @@
>>   get_slave_info() {
>>       # Warning: this sets $tmpfile and LEAVE this file! You must delete it 
>> after use!
>>       local mysql_options
>> +
>> +    if [ "$master_log_file" -a "$master_host" ]; then
>> +        # variables are already defined, get_slave_info has been run before
>> +        return $OCF_SUCCESS
>> +    else
>> +        tmpfile=`mktemp 
>> ${HA_RSCTMP}/check_slave.${OCF_RESOURCE_INSTANCE}.XXXXXX`
>>
>> -    tmpfile=`mktemp 
>> ${HA_RSCTMP}/check_slave.${OCF_RESOURCE_INSTANCE}.XXXXXX`
>> +        $MYSQL $MYSQL_OPTIONS_REPL \
>> +        -e 'SHOW SLAVE STATUS\G'>  $tmpfile
>>
>> -    $MYSQL $MYSQL_OPTIONS_REPL \
>> -    -e 'SHOW SLAVE STATUS\G'>  $tmpfile
>> +        if [ -s $tmpfile ]; then
>> +            master_host=`parse_slave_info Master_Host $tmpfile`
>> +            master_user=`parse_slave_info Master_User $tmpfile`
>> +            master_port=`parse_slave_info Master_Port $tmpfile`
>> +            master_log_file=`parse_slave_info Master_Log_File $tmpfile`
>> +            master_log_pos=`parse_slave_info Read_Master_Log_Pos $tmpfile`
>> +            slave_sql=`parse_slave_info Slave_SQL_Running $tmpfile`
>> +            slave_io=`parse_slave_info Slave_IO_Running $tmpfile`
>> +            last_errno=`parse_slave_info Last_Errno $tmpfile`
>> +            secs_behind=`parse_slave_info Seconds_Behind_Master $tmpfile`
>> +            ocf_log debug "MySQL instance running as a replication slave"
>> +        else
>> +            # Instance produced an empty "SHOW SLAVE STATUS" output --
>> +            # instance is not a slave
>> +            ocf_log err "check_slave invoked on an instance that is not a 
>> replication slave."
>> +            return $OCF_ERR_GENERIC
>> +        fi
>>
>> -    if [ -s $tmpfile ]; then
>> -        master_host=`parse_slave_info Master_Host $tmpfile`
>> -        master_user=`parse_slave_info Master_User $tmpfile`
>> -        master_port=`parse_slave_info Master_Port $tmpfile`
>> -        master_log_file=`parse_slave_info Master_Log_File $tmpfile`
>> -        master_log_pos=`parse_slave_info Read_Master_Log_Pos $tmpfile`
>> -        slave_sql=`parse_slave_info Slave_SQL_Running $tmpfile`
>> -        slave_io=`parse_slave_info Slave_IO_Running $tmpfile`
>> -        last_errno=`parse_slave_info Last_Errno $tmpfile`
>> -        secs_behind=`parse_slave_info Seconds_Behind_Master $tmpfile`
>> -        ocf_log debug "MySQL instance running as a replication slave"
>> -    else
>> -        # Instance produced an empty "SHOW SLAVE STATUS" output --
>> -        # instance is not a slave
>> -        ocf_log err "check_slave invoked on an instance that is not a 
>> replication slave."
>> -        return $OCF_ERR_GENERIC
>> +        return $OCF_SUCCESS
>>       fi
>> -
>> -    return $OCF_SUCCESS
>>   }
>>
>>   check_slave() {
>> @@ -692,7 +701,7 @@
>>       ocf_run $MYSQL $MYSQL_OPTIONS_REPL \
>>           -e "RESET SLAVE;"
>>       if [ $? -gt 0 ]; then
>> -        ocf_log err "Failed to set master"
>> +        ocf_log err "Failed to reset slave"
>>           exit $OCF_ERR_GENERIC
>>       fi
>>   }
>
>> _______________________________________________________
>> Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org
>> http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
>> Home Page: http://linux-ha.org/
>
> _______________________________________________________
> Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org
> http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
> Home Page: http://linux-ha.org/
>
_______________________________________________________
Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/

Reply via email to