Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-18163

Test Failure: transient_replication_test.TestTransientReplicationRepairLegacyStreaming.test_speculative_write_repair_cycle

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Triage Needed
    • Normal
    • Resolution: Unresolved
    • 4.0.x, 4.1.x, 5.x
    • Test/dtest/python
    • 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
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            mck Michael Semb Wever
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: