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

bootstrap_upgrade_test.py::test_simple_bootstrap_mixed_versions is failing on 3.11.4

    XMLWordPrintableJSON

Details

    • Correctness - Test Failure
    • Low

    Description

      test_simple_bootstrap_mixed_versions is failing due to CASSANDRA-13004, which introduced "cassandra.force_3_0_protocol_version" for schema migrations during upgrades from 3.0.14 upwards. This flag is missing in `test_simple_bootstrap_mixed_versions` while we are adding/bootstrapping 3.11.4 node to an existing 3.5 version of C* node, which resulted in ks keyspace schema/data not being bootstrapped to the new node.

      I debugged and confirmed that MigrationManager::is30Compatible is returning false which is forcing MigrationManager::shouldPullSchemaFrom to return false as well.

      from debug logs:

      DEBUG [GossipStage:1] 2019-02-06 23:20:47,392 MigrationManager.java:115 - Not pulling schema because versions match or shouldPullSchemaFrom returned fal
      

      Failed upgrade tests: https://circleci.com/gh/aweisberg/cassandra/2593#tests/containers/11

      From failed dtest: 

      self = <upgrade_tests.bootstrap_upgrade_test.TestBootstrapUpgrade object at 0x7f1bec192eb8>
      
          @pytest.mark.no_vnodes
          @since('3.10', max_version='3.99')
          def test_simple_bootstrap_mixed_versions(self):
      >       self._base_bootstrap_test(bootstrap_from_version="3.5")
      
      upgrade_tests/bootstrap_upgrade_test.py:20: 
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      bootstrap_test.py:114: in _base_bootstrap_test
          assert_almost_equal(size1, size2, error=0.3)
      _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
      
      args = (429.36, 133.1), kwargs = {'error': 0.3}, error = 0.3, vmax = 429.36
      vmin = 133.1, error_message = ''
      
          def assert_almost_equal(*args, **kwargs):
              """
              Assert variable number of arguments all fall within a margin of error.
              @params *args variable number of numerical arguments to check
              @params error Optional margin of error. Default 0.16
              @params error_message Optional error message to print. Default ''
          
              Examples:
              assert_almost_equal(sizes[2], init_size)
              assert_almost_equal(ttl_session1, ttl_session2[0][0], error=0.005)
              """
              error = kwargs['error'] if 'error' in kwargs else 0.16
              vmax = max(args)
              vmin = min(args)
              error_message = '' if 'error_message' not in kwargs else kwargs['error_message']
              assert vmin > vmax * (1.0 - error) or vmin == vmax, \
      >           "values not within {:.2f}% of the max: {} ({})".format(error * 100, args, error_message)
      E       AssertionError: values not within 30.00% of the max: (429.36, 133.1) ()
      
      tools/assertions.py:206: AssertionError
      

       

      Attachments

        Activity

          People

            vinaykumarcse Vinay Chella
            vinaykumarcse Vinay Chella
            Vinay Chella
            Ariel Weisberg
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: