Skip to content

Commit 0a35a78

Browse files
committed
Bug #27639722 ATRT DOES NOT REPORT NDB FAILURE WHEN BOTH NDB AND
SERVER FAIL Description : During test execution, ATRT checks if NDB processes and SERVER processes has failed. In case of ndb or servers failure, ATRT aborts the test execution and reports failure accordingly. An NDB failure would supersede any SERVER failure. A new error state(ERR_NDB_AND_SERVERS_FAILED = 106) is introduced to check for the cases where both ndb and server processes fail and the failures are reported appropriately.
1 parent 69271ff commit 0a35a78

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

storage/ndb/test/run-test/atrt.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ enum ErrorCodes {
4040
ERR_SERVERS_FAILED = 102,
4141
ERR_MAX_TIME_ELAPSED = 103,
4242
ERR_COMMAND_FAILED = 104,
43-
ERR_FAILED_TO_START = 105
43+
ERR_FAILED_TO_START = 105,
44+
ERR_NDB_AND_SERVERS_FAILED = 106
4445
};
4546

4647
struct atrt_host {

storage/ndb/test/run-test/autotest-run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
##############
2727

2828
save_args=$*
29-
VERSION="autotest-run.sh version 1.17"
29+
VERSION="autotest-run.sh version 1.18"
3030

3131
DATE=`date '+%Y-%m-%d'`
3232
if [ `uname -s` != "SunOS" ]

storage/ndb/test/run-test/main.cpp

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1155,23 +1155,28 @@ bool update_status(atrt_config &config, int types, bool fail_on_missing) {
11551155
}
11561156

11571157
int check_ndb_or_servers_failures(atrt_config &config) {
1158-
int result = 0;
1158+
int failed_processes = 0;
11591159
const int types = p_ndb | p_servers;
11601160
for (unsigned i = 0; i < config.m_processes.size(); i++) {
11611161
atrt_process &proc = *config.m_processes[i];
1162-
if ((types & proc.m_type) != 0) {
1163-
if (!(proc.m_proc.m_status == "running" ||
1164-
IF_WIN(proc.m_type & atrt_process::AP_MYSQLD, 0))) {
1165-
g_logger.critical("%s #%d not running on %s", proc.m_name.c_str(),
1166-
proc.m_index, proc.m_host->m_hostname.c_str());
1167-
if (p_ndb & proc.m_type)
1168-
result = ERR_NDB_FAILED;
1169-
else if (p_servers & proc.m_type)
1170-
result = ERR_SERVERS_FAILED;
1171-
}
1162+
bool skip = IF_WIN(proc.m_type & atrt_process::AP_MYSQLD, 0);
1163+
bool isRunning = proc.m_proc.m_status == "running";
1164+
if ((types & proc.m_type) != 0 && !isRunning && !skip) {
1165+
g_logger.critical("%s #%d not running on %s", proc.m_name.c_str(),
1166+
proc.m_index, proc.m_host->m_hostname.c_str());
1167+
failed_processes |= proc.m_type;
11721168
}
11731169
}
1174-
return result;
1170+
if ((failed_processes & p_ndb) && (failed_processes & p_servers)) {
1171+
return ERR_NDB_AND_SERVERS_FAILED;
1172+
}
1173+
if ((failed_processes & p_ndb) != 0) {
1174+
return ERR_NDB_FAILED;
1175+
}
1176+
if((failed_processes & p_servers) != 0) {
1177+
return ERR_SERVERS_FAILED;
1178+
}
1179+
return 0;
11751180
}
11761181

11771182
bool is_client_running(atrt_config &config) {

0 commit comments

Comments
 (0)