Skip to content

Commit 727ef00

Browse files
joaosigmarennox
authored andcommitted
Fix test failures and code cleanup
Fixed these tests from randomly failing: - locking_norecord.js - simple_plain_cs_mysql_comm_stack_norecord.js Also, prevent the error message "Instance 'foo' is already part of this InnoDB Cluster but is (MISSING).", introduced when fixing #30896233, from showing in dba.rebootClusterFromCompleteOutage(). Change-Id: Ib83d02e447125c863b12a5878779fe92d257a656
1 parent 04eecb7 commit 727ef00

File tree

6 files changed

+24
-31
lines changed

6 files changed

+24
-31
lines changed

modules/adminapi/common/instance_validations.cc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,11 @@
3131
#include "modules/adminapi/common/dba_errors.h"
3232
#include "modules/adminapi/common/metadata_storage.h"
3333
#include "modules/adminapi/common/provision.h"
34-
#include "modules/adminapi/common/sql.h"
35-
#include "modules/adminapi/mod_dba.h"
3634
#include "mysqlshdk/include/shellcore/console.h"
37-
#include "mysqlshdk/libs/config/config_server_handler.h"
3835
#include "mysqlshdk/libs/mysql/replication.h"
3936
#include "mysqlshdk/libs/textui/textui.h"
4037
#include "mysqlshdk/libs/utils/utils_net.h"
38+
#include "mysqlshdk/libs/utils/utils_string.h"
4139
#include "mysqlshdk/libs/utils/version.h"
4240

4341
// Naming convention for validations:
@@ -530,7 +528,7 @@ void validate_performance_schema_enabled(
530528
void ensure_instance_not_belong_to_cluster(
531529
const std::shared_ptr<Instance> &instance,
532530
const std::shared_ptr<Instance> &cluster_instance,
533-
const std::string &cluster_id) {
531+
std::string_view cluster_id, bool omit_missing_instance_warn) {
534532
auto metadata = std::make_shared<MetadataStorage>(instance);
535533
auto type = mysqlsh::dba::get_instance_type(*metadata, *instance);
536534

@@ -553,10 +551,12 @@ void ensure_instance_not_belong_to_cluster(
553551

554552
metadata_cluster->get_instance_by_uuid(instance->get_uuid());
555553

556-
current_console()->print_error(
557-
"Instance '" + instance->descr() +
558-
"' is already part of this InnoDB Cluster but is (MISSING). Please "
559-
"use <Cluster>.<<<rejoinInstance()>>> to rejoin it.");
554+
if (!omit_missing_instance_warn)
555+
current_console()->print_error(
556+
shcore::str_format("Instance '%s' is already part of this InnoDB "
557+
"Cluster but is (MISSING). Please use "
558+
"<Cluster>.<<<rejoinInstance()>>> to rejoin it.",
559+
instance->descr().c_str()));
560560

561561
throw shcore::Exception("The instance '" + instance->descr() +
562562
"' is already part of this InnoDB Cluster",

modules/adminapi/common/instance_validations.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void validate_performance_schema_enabled(
6565
void ensure_instance_not_belong_to_cluster(
6666
const std::shared_ptr<Instance> &instance,
6767
const std::shared_ptr<Instance> &cluster_instance,
68-
const std::string &cluster_id);
68+
std::string_view cluster_id, bool omit_missing_instance_warn = false);
6969

7070
void ensure_instance_not_belong_to_metadata(
7171
const mysqlshdk::mysql::IInstance &instance,

modules/adminapi/dba/reboot_cluster_from_complete_outage.cc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,10 @@
3535
#include "modules/adminapi/common/sql.h"
3636
#include "modules/adminapi/common/topology_executor.h"
3737
#include "modules/adminapi/common/validations.h"
38-
#include "modules/adminapi/mod_dba.h"
3938
#include "modules/errors.h"
40-
#include "mysqlshdk/include/shellcore/utils_help.h"
4139
#include "mysqlshdk/libs/mysql/async_replication.h"
4240
#include "mysqlshdk/libs/utils/utils_net.h"
4341
#include "mysqlshdk/libs/utils/utils_string.h"
44-
#include "mysqlshdk/shellcore/shell_console.h"
4542

4643
namespace mysqlsh::dba {
4744

@@ -734,7 +731,7 @@ void Reboot_cluster_from_complete_outage::reboot_seed(
734731
try {
735732
mysqlsh::dba::checks::ensure_instance_not_belong_to_cluster(
736733
m_target_instance, m_cluster->impl()->get_cluster_server(),
737-
m_cluster->impl()->get_id());
734+
m_cluster->impl()->get_id(), true);
738735
} catch (const shcore::Exception &exp) {
739736
m_already_member =
740737
(exp.code() == SHERR_DBA_ASYNC_MEMBER_INCONSISTENT) ||

unittest/scripts/auto/js_adminapi/scripts/locking_norecord.js

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,11 @@ cluster_lock_check(function() {
192192

193193
cluster.addInstance(__sandbox_uri3, {ipAllowlist: allowlist});
194194

195-
disable_auto_rejoin(__mysql_sandbox_port3);
195+
cluster.status();
196196

197-
shell.connect(__sandbox_uri1);
198-
testutil.killSandbox(__mysql_sandbox_port3);
199-
testutil.waitMemberState(__mysql_sandbox_port3, "(MISSING)");
200-
testutil.startSandbox(__mysql_sandbox_port3);
197+
var session3 = mysql.getSession(__sandbox_uri3);
198+
session3.runSql("STOP group_replication;");
199+
session3.close();
201200

202201
cluster_lock_check(function() {
203202
cluster.rejoinInstance(__sandbox_uri3, {ipAllowlist: allowlist});
@@ -320,22 +319,20 @@ instance_lock_check(session3, __mysql_sandbox_port3, function() {
320319
dba.configureLocalInstance(__sandbox_uri3);
321320
});
322321

323-
//@<> exclusive instance lock on dba.rebootClusterFromCompleteOutage()
324-
325322
session1.close();
326323
session3.close();
324+
session4.close();
327325

328-
disable_auto_rejoin(__mysql_sandbox_port1);
329-
disable_auto_rejoin(__mysql_sandbox_port2);
326+
//@<> exclusive instance lock on dba.rebootClusterFromCompleteOutage()
330327

331-
testutil.killSandbox(__mysql_sandbox_port1);
332-
testutil.killSandbox(__mysql_sandbox_port2);
333-
testutil.startSandbox(__mysql_sandbox_port1);
334-
testutil.startSandbox(__mysql_sandbox_port2);
328+
cluster.status();
335329

336330
session1 = mysql.getSession(__sandbox_uri1);
337331
session2 = mysql.getSession(__sandbox_uri2);
338332

333+
session1.runSql("STOP group_replication;");
334+
session2.runSql("STOP group_replication;");
335+
339336
shell.connect(__sandbox_uri1);
340337

341338
instance_lock_check(session1, __mysql_sandbox_port1, function() {

unittest/scripts/auto/js_adminapi_async/scripts/locking_norecord.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,6 @@ testutil.releaseLocks(session1, lock_instance);
267267
rs.rejoinInstance(__sandbox1);
268268
EXPECT_OUTPUT_CONTAINS(`The instance '${localhost}:${__mysql_sandbox_port1}' is ONLINE and the primary of the ReplicaSet.`);
269269

270-
//@<> (BUG#30673719) rejoinInstance on primary should not fail due to double self lock (using hostname).
271-
rs.rejoinInstance(__endpoint1);
272-
EXPECT_OUTPUT_CONTAINS(`The instance '${localhost}:${__mysql_sandbox_port1}' is ONLINE and the primary of the ReplicaSet.`);
273-
274270
//@<> (BUG#30673719) rejoinInstance on primary should not fail due to double self lock (using hostname_ip).
275271
var address_using_ip = hostname_ip + ":" + __mysql_sandbox_port1;
276272
rs.rejoinInstance(address_using_ip);

unittest/scripts/auto/js_adminapi_clusterset/scripts/simple_plain_cs_mysql_comm_stack_norecord.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,13 +310,16 @@ EXPECT_NO_THROWS(function() { cluster.removeInstance(__sandbox_uri3); });
310310
CHECK_PRIMARY_CLUSTER([__sandbox_uri1, __sandbox_uri2], cluster)
311311

312312
//@<> addInstance on replica cluster
313+
shell.connect(__sandbox_uri4);
314+
313315
EXPECT_NO_THROWS(function() { replicacluster.addInstance(__sandbox_uri3, {recoveryMethod: "clone"}); });
316+
testutil.waitMemberState(__mysql_sandbox_port3, "ONLINE");
314317
CHECK_REPLICA_CLUSTER([__sandbox_uri4, __sandbox_uri3], cluster, replicacluster);
315318

316319
//@<> rejoinInstance on a replica cluster
317320
session3 = mysql.getSession(__sandbox_uri3);
318321
session3.runSql("STOP group_replication");
319-
shell.connect(__sandbox_uri4);
322+
320323
EXPECT_NO_THROWS(function() { replicacluster.rejoinInstance(__sandbox_uri3); });
321324
testutil.waitMemberState(__mysql_sandbox_port3, "ONLINE");
322325
CHECK_REPLICA_CLUSTER([__sandbox_uri4, __sandbox_uri3], cluster, replicacluster);

0 commit comments

Comments
 (0)