This is an automated email from the ASF dual-hosted git repository. brandonwilliams pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git
The following commit(s) were added to refs/heads/master by this push: new 2278fb5 Fix test_resumable_bootstrap 2278fb5 is described below commit 2278fb50daaae262960811a636b3182e5d36d439 Author: Ekaterina Dimitrova <ekaterina.dimitr...@datastax.com> AuthorDate: Fri Mar 6 14:36:57 2020 -0500 Fix test_resumable_bootstrap Patch by Ekaterina Dimitrova, reviewed by Jordan West and brandonwilliams for CASSANDRA-15614 --- bootstrap_test.py | 63 ++++++++++--------------------------------------------- 1 file changed, 11 insertions(+), 52 deletions(-) diff --git a/bootstrap_test.py b/bootstrap_test.py index f866742..d22599f 100644 --- a/bootstrap_test.py +++ b/bootstrap_test.py @@ -336,50 +336,6 @@ class TestBootstrap(Tester): assert_not_running(node3) @since('2.2') - def test_resumable_bootstrap(self): - """ - Test resuming bootstrap after data streaming failure - """ - cluster = self.cluster - cluster.populate(2) - - node1 = cluster.nodes['node1'] - # set up byteman - node1.byteman_port = '8100' - node1.import_config_files() - - cluster.start(wait_other_notice=True) - # kill stream to node3 in the middle of streaming to let it fail - if cluster.version() < '4.0': - node1.byteman_submit([self.byteman_submit_path_pre_4_0]) - else: - node1.byteman_submit([self.byteman_submit_path_4_0]) - node1.stress(['write', 'n=1K', 'no-warmup', 'cl=TWO', '-schema', 'replication(factor=2)', '-rate', 'threads=50']) - cluster.flush() - - # start bootstrapping node3 and wait for streaming - node3 = new_node(cluster) - node3.start(wait_other_notice=False) - - # let streaming fail as we expect - node3.watch_log_for('Some data streaming failed') - - # bring back node3 and invoke nodetool bootstrap to resume bootstrapping - node3.nodetool('bootstrap resume') - node3.wait_for_binary_interface() - assert_bootstrap_state(self, node3, 'COMPLETED') - - # cleanup to guarantee each node will only have sstables of its ranges - cluster.cleanup() - - logger.debug("Check data is present") - # Let's check stream bootstrap completely transferred data - stdout, stderr, _ = node3.stress(['read', 'n=1k', 'no-warmup', '-schema', 'replication(factor=2)', '-rate', 'threads=8']) - - if stdout is not None: - assert "FAILURE" not in stdout - - @since('2.2') def test_bootstrap_with_reset_bootstrap_state(self): """Test bootstrap with resetting bootstrap progress""" cluster = self.cluster @@ -752,10 +708,13 @@ class TestBootstrap(Tester): shutil.rmtree(commitlog_dir) @since('2.2') - def test_bootstrap_binary_disabled(self): + def test_bootstrap_binary_disabled_resumable_bootstrap(self): """ Test binary while bootstrapping and streaming fails @jira_ticket CASSANDRA-14526, CASSANDRA-14525 + Test resumable bootstrap + In very rare cases this test might fail because the bootstrap completes before the streaming failure + @jira_ticket CASSANDRA-15614 """ config = {'authenticator': 'org.apache.cassandra.auth.PasswordAuthenticator', 'authorizer': 'org.apache.cassandra.auth.CassandraAuthorizer', @@ -786,8 +745,8 @@ class TestBootstrap(Tester): node2.byteman_port = '8101' # set for when we add node3 node2.import_config_files() node2.start(jvm_args=["-Dcassandra.ring_delay_ms=5000"], wait_other_notice=True) - self.assert_log_had_msg(node2, 'Some data streaming failed', timeout=30) - self.assert_log_had_msg(node2, 'Not starting client transports as bootstrap has not completed', timeout=30) + self.assert_log_had_msg(node2, 'Some data streaming failed') + self.assert_log_had_msg(node2, 'Not starting client transports as bootstrap has not completed') try: node2.nodetool('join') @@ -811,8 +770,8 @@ class TestBootstrap(Tester): node1.byteman_submit([self.byteman_submit_path_4_0]) node2.byteman_submit([self.byteman_submit_path_4_0]) node3.start(jvm_args=["-Dcassandra.write_survey=true", "-Dcassandra.ring_delay_ms=5000"], wait_other_notice=True) - self.assert_log_had_msg(node3, 'Some data streaming failed', timeout=30) - self.assert_log_had_msg(node3, "Not starting client transports in write_survey mode as it's bootstrapping or auth is enabled", timeout=30) + self.assert_log_had_msg(node3, 'Some data streaming failed') + self.assert_log_had_msg(node3, "Not starting client transports in write_survey mode as it's bootstrapping or auth is enabled") try: node3.nodetool('join') @@ -821,10 +780,10 @@ class TestBootstrap(Tester): assert "Cannot join the ring until bootstrap completes" in t.stdout node3.nodetool('bootstrap resume') - self.assert_log_had_msg(node3, "Not starting client transports in write_survey mode as it's bootstrapping or auth is enabled", timeout=30) + self.assert_log_had_msg(node3, "Not starting client transports in write_survey mode as it's bootstrapping or auth is enabled") # Should succeed in joining node3.nodetool('join') - self.assert_log_had_msg(node3, "Leaving write survey mode and joining ring at operator request", timeout=30) + self.assert_log_had_msg(node3, "Leaving write survey mode and joining ring at operator request") assert_bootstrap_state(self, node3, 'COMPLETED', user='cassandra', password='cassandra') - node3.wait_for_binary_interface(timeout=30) + node3.wait_for_binary_interface() --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org