Details
-
Bug
-
Status: Resolved
-
Low
-
Resolution: Unresolved
-
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