From 4ef07c25bdb3c0399bc9740a141d62ff08ddd7e9 Mon Sep 17 00:00:00 2001 From: Nimisha Asthagiri Date: Mon, 23 Jan 2017 10:56:34 -0500 Subject: [PATCH] Fix Block Transformer version checking so cache can be pre-populated This change requires Block Transformer schema changes to be backwards compatible for older Block Transformer code versions - at least 1 version back to allow smooth deployments in a multi-version setting. --- openedx/core/lib/block_structure/tests/test_manager.py | 4 +++- openedx/core/lib/block_structure/transformers.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/openedx/core/lib/block_structure/tests/test_manager.py b/openedx/core/lib/block_structure/tests/test_manager.py index 4fdf2a280b..6dd4f0f927 100644 --- a/openedx/core/lib/block_structure/tests/test_manager.py +++ b/openedx/core/lib/block_structure/tests/test_manager.py @@ -169,8 +169,10 @@ class TestBlockStructureManager(TestCase, ChildrenMapTestMixin): def test_get_collected_outdated_data(self): self.collect_and_verify(expect_modulestore_called=True, expect_cache_updated=True) - TestTransformer1.VERSION += 1 + TestTransformer1.VERSION += 1 # transformer code requires new schema version self.collect_and_verify(expect_modulestore_called=True, expect_cache_updated=True) + TestTransformer1.VERSION -= 1 # old transformer code works with new schema version + self.collect_and_verify(expect_modulestore_called=False, expect_cache_updated=False) self.assertEquals(TestTransformer1.collect_call_count, 2) def test_get_collected_version_update(self): diff --git a/openedx/core/lib/block_structure/transformers.py b/openedx/core/lib/block_structure/transformers.py index ed181944c7..04deaef374 100644 --- a/openedx/core/lib/block_structure/transformers.py +++ b/openedx/core/lib/block_structure/transformers.py @@ -90,7 +90,7 @@ class BlockStructureTransformers(object): outdated_transformers = [] for transformer in TransformerRegistry.get_registered_transformers(): version_in_block_structure = block_structure._get_transformer_data_version(transformer) # pylint: disable=protected-access - if transformer.VERSION != version_in_block_structure: + if transformer.VERSION > version_in_block_structure: outdated_transformers.append(transformer) if outdated_transformers: