Details
-
Bug
-
Status: Triage Needed
-
Normal
-
Resolution: Unresolved
-
None
-
All
-
None
Description
Flaky.
self = <transient_replication_test.TestTransientReplicationRepairLegacyStreaming object at 0x7fbaa96e04c0> @pytest.mark.no_vnodes def test_speculative_write_repair_cycle(self): """ incremental repair from full replica should remove data on node3 """ > self._test_speculative_write_repair_cycle(primary_range=False, optimized_repair=False, repair_coordinator=self.node1, expect_node3_data=False) transient_replication_test.py:504: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <transient_replication_test.TestTransientReplicationRepairLegacyStreaming object at 0x7fbaa96e04c0> primary_range = False, optimized_repair = False repair_coordinator = <ccmlib.node.Node object at 0x7fbaa9a2d160> expect_node3_data = False, use_lcs = False def _test_speculative_write_repair_cycle(self, primary_range, optimized_repair, repair_coordinator, expect_node3_data, use_lcs=False): """ if one of the full replicas is not available, data should be written to the transient replica, but removed after incremental repair """ for node in self.nodes: self.assert_has_no_sstables(node) if use_lcs: self.use_lcs() self.node2.byteman_submit([mk_bman_path('stop_writes.btm')]) # self.insert_row(1) tm = lambda n: self.table_metrics(n) with tm(self.node1) as tm1, tm(self.node2) as tm2, tm(self.node3) as tm3: assert tm1.write_count == 0 assert tm2.write_count == 0 assert tm3.write_count == 0 self.insert_row(1, 1, 1) assert tm1.write_count == 1 assert tm2.write_count == 0 assert tm3.write_count == 1 self.assert_has_sstables(self.node1, flush=True) self.assert_has_no_sstables(self.node2, flush=True) self.assert_has_sstables(self.node3, flush=True) repair_opts = ['repair', self.keyspace] if primary_range: repair_opts.append('-pr') if optimized_repair: repair_opts.append('-os') self.node1.nodetool(' '.join(repair_opts)) self.assert_has_sstables(self.node1, compact=True) self.assert_has_sstables(self.node2, compact=True) if expect_node3_data: self.assert_has_sstables(self.node3, compact=True) else: self.assert_has_no_sstables(self.node3, compact=True) entire_sstable = "true" if self.stream_entire_sstables() else "false" > assert self.node2.grep_log('Incoming stream entireSSTable={}'.format(entire_sstable), filename='debug.log') E AssertionError: assert [] E + where [] = <bound method Node.grep_log of <ccmlib.node.Node object at 0x7fbaa96f4700>>('Incoming stream entireSSTable=false', filename='debug.log') E + where <bound method Node.grep_log of <ccmlib.node.Node object at 0x7fbaa96f4700>> = <ccmlib.node.Node object at 0x7fbaa96f4700>.grep_log E + where <ccmlib.node.Node object at 0x7fbaa96f4700> = <transient_replication_test.TestTransientReplicationRepairLegacyStreaming object at 0x7fbaa96e04c0>.node2 E + and 'Incoming stream entireSSTable=false' = <built-in method format of str object at 0x7fbaa960f150>('false') E + where <built-in method format of str object at 0x7fbaa960f150> = 'Incoming stream entireSSTable={}'.format transient_replication_test.py:499: AssertionError