Bug #44115 purge_relay_logs doesn't return an error when count_relay_log_space fails
Submitted: 6 Apr 2009 17:01 Modified: 13 Jul 2009 11:58
Reporter: Mark Callaghan Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Replication Severity:S3 (Non-critical)
Version:5.0,5.1,6.0 OS:Any
Assigned to: Andrei Elkin CPU Architecture:Any
Tags: replication

[6 Apr 2009 17:01] Mark Callaghan
Description:
Is this by design? In 5.1, purge_relay_logs has this code that branches to 'err:' without setting 'error=1'. Earlier in purge_relay_logs, code that branches to 'err:' sets 'error=1'. When not set here, purge_relay_logs returns 0 even though count_relay_log_space failed.

  if (count_relay_log_space(rli))
  {
    *errmsg= "Error counting relay log space";
    goto err;
  }
<snip>
err:
#ifndef DBUG_OFF
  char buf[22];
#endif
  DBUG_PRINT("info",("log_space_total: %s",llstr(rli->log_space_total,buf)));
  pthread_mutex_unlock(&rli->data_lock);
  DBUG_RETURN(error);
}

How to repeat:
NA
[6 Apr 2009 17:11] Valeriy Kravchuk
Thank you for the bug report. Verified by code review. Indeed, looks like assignment to local variable error is just missed in sql/slave.cc (5.0) and sql/rpl_rli.cc (5.1) for this case.
[9 Jul 2009 7:08] Andrei Elkin
The issue is actually fixed in 6.0 as combination of
alfranio.correia@sun.com-20090402161414-apde4ev9rhlxcuet
and a patch for Bug#41902.
[9 Jul 2009 7:33] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/78264

3015 Andrei Elkin	2009-07-09
      Bug #44115 purge_relay_logs doesn't return an error when count_relay_log_space fails
      
      purge_relay_logs() did not propagate an error happend in count_relay_log_space().
      
      Fixed with the suggestesd setting the error= true.
      Note, propagation generally out of purge_relay_logs() was fixed for Bug #44179,
      and the issue does not exist in 6.0 thanks to a patch for WL#2775.
[10 Jul 2009 11:20] Bugs System
Pushed into 5.4.4-alpha (revid:anozdrin@bk-internal.mysql.com-20090710111017-bnh2cau84ug1hvei) (version source revid:alfranio.correia@sun.com-20090709115409-5lav77omuqx8hc0n) (merge vers: 5.4.4-alpha) (pib:11)
[13 Jul 2009 11:58] Jon Stephens
Documented bugfix in the 5.4.4 changelog as follows:

      The internal function purge_relay_logs() did not propagate an error
      occurring in another internal function count_relay_log_space().
[13 Jul 2009 17:48] Bugs System
Pushed into 5.1.37 (revid:joro@sun.com-20090713174543-cd2x7q1gi1hzoand) (version source revid:staale.smedseng@sun.com-20090710151930-6e6kq5tp7ux1rtbh) (merge vers: 5.1.37) (pib:11)
[12 Aug 2009 22:01] Paul DuBois
Noted in 5.4.2 changelog because next 5.4 version will be 5.4.2 and not 5.4.4.
[14 Aug 2009 22:51] Paul DuBois
Ignore previous comment about 5.4.2.
[26 Aug 2009 13:45] Bugs System
Pushed into 5.1.37-ndb-7.0.8 (revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l) (version source revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l) (merge vers: 5.1.37-ndb-7.0.8) (pib:11)
[26 Aug 2009 13:46] Bugs System
Pushed into 5.1.37-ndb-6.3.27 (revid:jonas@mysql.com-20090826105955-bkj027t47gfbamnc) (version source revid:jonas@mysql.com-20090826105955-bkj027t47gfbamnc) (merge vers: 5.1.37-ndb-6.3.27) (pib:11)
[26 Aug 2009 13:48] Bugs System
Pushed into 5.1.37-ndb-6.2.19 (revid:jonas@mysql.com-20090825194404-37rtosk049t9koc4) (version source revid:jonas@mysql.com-20090825194404-37rtosk049t9koc4) (merge vers: 5.1.37-ndb-6.2.19) (pib:11)
[27 Aug 2009 16:32] Bugs System
Pushed into 5.1.35-ndb-7.1.0 (revid:magnus.blaudd@sun.com-20090827163030-6o3kk6r2oua159hr) (version source revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l) (merge vers: 5.1.37-ndb-7.0.8) (pib:11)
[7 Oct 2009 1:48] Paul DuBois
The 5.4 fix has been pushed into 5.4.2.