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.
This commit is contained in:
Nimisha Asthagiri
2017-01-23 10:56:34 -05:00
parent 43c5cb2af8
commit 4ef07c25bd
2 changed files with 4 additions and 2 deletions

View File

@@ -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):

View File

@@ -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: