| Bug #72212 | rpl_heartbeat_basic does not do clean-up | ||
|---|---|---|---|
| Submitted: | 2 Apr 2014 19:58 | Modified: | 7 Apr 2014 8:08 |
| Reporter: | Serge Kozlov | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Replication | Severity: | S3 (Non-critical) |
| Version: | 5.5.36 | OS: | Any |
| Assigned to: | Serge Kozlov | CPU Architecture: | Any |
| Tags: | replication | ||
[7 Apr 2014 8:08]
Jon Stephens
Thank you for your bug report. This issue has been committed to our source repository of that product and will be incorporated into the next release.
If necessary, you can access the source repository and build the latest available version, including the bug fix. More information about accessing the source trees is available at
http://dev.mysql.com/doc/en/installing-source.html
[7 Apr 2014 8:10]
Jon Stephens
Fixed in MySQL 5.5.38/5.6.18/5.7.5. As this affects testing only, there are no user-facing changes to document and thus no need for a changelog entry. Closed.
[31 May 2014 13:54]
Laurynas Biveinis
$ bzr log -r 4616 ------------------------------------------------------------ revno: 4616 committer: Serge Kozlov <serge.kozlov@oracle.com> branch nick: mysql-5.5 timestamp: Fri 2014-04-04 10:42:25 +0400 message: BUG#18506556. Added sync slave with master for clean-up
[3 Jul 2014 5:15]
Erlend Dahl
Bug#71631 was marked as a duplicate.
[12 Sep 2025 9:12]
Anthony Joann
Interesting point about rpl_heartbeat_basic lacking cleanup. Has anyone explored using a custom cleanup function triggered by an exception or script termination? This could improve reliability. For example, integrating something similar to what I use for handling crashes during intense Moto X3M gameplay. It's a simple try-except block that executes cleanup tasks. Would love to hear if anyone has experience with a similar approach in this context! https://motox3mfree.io/
[21 Jan 3:05]
Gerald Morel
Okay, cleanup is crucial, isn't it? Heartbeats should fade gracefully, like old songs. I see a neglected garden, overrun and forgotten. This MTR failure sounds like a poltergeist in the machine. One time, our project was plagued by zombie processes, a subtle Slope upward in resource consumption that brought the whole system to its knees during peak hours. We learned the hard way about diligent housekeeping back then. https://slopegame-online.com
[29 Jan 4:24]
Edward Quintana
Okay, deprecated warnings, always a fun surprise! Seems like the mysql-test-run.pl script is throwing some defined(@array) deprecated messages. Interesting that it points to both mtr_cases.pm and the main script itself. I wonder if omitting the defined() is truly the simple fix. Reminds me of that time I was wrestling with a perl script for, wait for it, some Slither io related data processing and kept hitting similar snags with older syntax. The debug was a nightmare. https://slitherio.onl
[5 Mar 7:07]
Edward Quintana
Ah, the joys of debugging! It seems like some deprecated array usage is causing hiccups, classic. Dependency conflicts, everyone's favorite. I once had a similar head-scratcher while trying to optimize a level in geometry dash and ran into some unexpected physics glitches that made absolutely no sense until I realized a library version mismatch. https://geometrydashlitefree.com
[12 Mar 3:27]
James BlockBlast
It turned out to be a resource leak in a custom script we were using to manage the replication heartbeat. The script wasn't properly releasing resources, leading to eventual system instability. After days of digging, we finally identified the issue and patched the script. Ah, good times! For some relaxing puzzle fun after debugging, I sometimes play https://blockblasts.io/

Description: rpl_heartbeat_basic does not do clean-up and thus MTR's check failed How to repeat: ./mysql-test-run.pl --vardir=/tmp/mysql/var --tmpdir=/tmp/mysql/tmp rpl_heartbeat_basic defined(@array) is deprecated at lib/mtr_cases.pm line 340. (Maybe you should just omit the defined()?) defined(@array) is deprecated at ./mysql-test-run.pl line 490. (Maybe you should just omit the defined()?) Logging: ./mysql-test-run.pl --vardir=/tmp/mysql/var --tmpdir=/tmp/mysql/tmp rpl_heartbeat_basic 140325 17:25:09 [Note] Plugin 'FEDERATED' is disabled. MySQL Version 5.5.36 Checking supported features... - SSL connections supported Collecting tests... - adding combinations for rpl Checking leftover processes... Removing old var directory... Creating var directory '/tmp/mysql/var'... Installing system database... Using server port 57049 ============================================================================== TEST RESULT TIME (ms) or COMMENT -------------------------------------------------------------------------- worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009 rpl.rpl_heartbeat_basic 'mix' [ pass ] 58208 MTR's internal check of the test case 'rpl.rpl_heartbeat_basic' failed. This means that the test case does not preserve the state that existed before the test case was executed. Most likely the test case did not do a proper clean-up. It could also be caused by the previous test run by this thread, if the server wasn't restarted. This is the diff of the states of the servers before and after the test case was executed: mysqltest: Logging to '/tmp/mysql/var/tmp/check-mysqld_2.log'. mysqltest: Results saved in '/tmp/mysql/var/tmp/check-mysqld_2.result'. mysqltest: Connecting to server localhost:13001 (socket /tmp/mysql/tmp/mysqld.2.sock) as 'root', connection 'default', attempt 0 ... mysqltest: ... Connected. mysqltest: Start processing test commands from './include/check-testcase.test' ... mysqltest: ... Done processing test commands. --- /tmp/mysql/var/tmp/check-mysqld_2.result 2014-03-25 20:25:13.555623440 +0300 +++ /tmp/mysql/var/tmp/check-mysqld_2.reject 2014-03-25 20:26:12.079623440 +0300 @@ -612,6 +612,9 @@ mysql.user plugin 41 YES char 64 192 NULL NULL utf8 utf8_bin char(64) mysql.user authentication_string 42 NULL YES text 65535 65535 NULL NULL utf8 utf8_bin text EVENT_CATALOG EVENT_SCHEMA EVENT_NAME DEFINER TIME_ZONE EVENT_BODY EVENT_DEFINITION EVENT_TYPE EXECUTE_AT INTERVAL_VALUE INTERVAL_FIELD SQL_MODE STARTS ENDS STATUS ON_COMPLETION CREATEDLAST_ALTERED LAST_EXECUTED EVENT_COMMENT ORIGINATOR CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION +def test e1 root@localhost SYSTEM SQL BEGIN +UPDATE test.t1 SET a = a + 1 WHERE a < 10; +END RECURRING NULL 1 SECOND 2014-03-25 20:25:29 NULL SLAVESIDE_DISABLED NOT PRESERVE 2014-03-25 20:25:29 2014-03-25 20:25:29 NULL 1 latin1 latin1_swedish_ci latin1_swedish_ci TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE CREATED LAST_ALTERED SQL_MODE ROUTINE_COMMENT DEFINERCHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); END NULL NULL SQL NO CONTAINS SQL NULL DEFINER 2014-03-25 20:25:11 2014-03-25 20:25:11 root@localhostutf8 utf8_general_ci latin1_swedish_ci mysqltest: Result content mismatch not ok rpl.rpl_heartbeat_basic 'row' [ skipped ] Doesn't support --binlog-format='row' rpl.rpl_heartbeat_basic 'stmt' [ skipped ] Doesn't support --binlog-format='statement' -------------------------------------------------------------------------- The servers were restarted 0 times Spent 58.208 of 64 seconds executing testcases Check of testcase failed for: rpl.rpl_heartbeat_basic Suggested fix: The reason of check failure following code: --connection master DELETE FROM t1; DROP EVENT e1; --echo # Check received heartbeat events while logs flushed on slave --connection slave --echo *** Flush logs on slave *** STOP SLAVE; RESET SLAVE; DROP TABLE t1; Test doesn't sync after DELETE/DROP statements and then reset slave. Adding --sync_slave_with_master after DROP EVENT e1 will fix it