From 4a969f9f1b17a0fdadfa40d04db507d6cc87aef2 Mon Sep 17 00:00:00 2001 From: Usman Khalid <2200617@gmail.com> Date: Mon, 27 Oct 2014 17:49:45 +0500 Subject: [PATCH] Added autoretry_read decorator to methods which use mongo cursor. PLAT-71 --- common/lib/xmodule/xmodule/modulestore/mongo/base.py | 4 ++++ common/lib/xmodule/xmodule/modulestore/split_mongo/split.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/common/lib/xmodule/xmodule/modulestore/mongo/base.py b/common/lib/xmodule/xmodule/modulestore/mongo/base.py index 6a8f795784..2eb3505c9d 100644 --- a/common/lib/xmodule/xmodule/modulestore/mongo/base.py +++ b/common/lib/xmodule/xmodule/modulestore/mongo/base.py @@ -526,6 +526,7 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo connection.drop_database(self.collection.database.proxied_object) connection.close() + @autoretry_read() def fill_in_run(self, course_key): """ In mongo some course_keys are used without runs. This helper function returns @@ -699,6 +700,7 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo item['location'] = item['_id'] del item['_id'] + @autoretry_read() def _query_children_for_cache_children(self, course_key, items): """ Generate a pymongo in query for finding the items and return the payloads @@ -803,6 +805,7 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo for item in items ] + @autoretry_read() def get_courses(self, **kwargs): ''' Returns a list of course descriptors. @@ -934,6 +937,7 @@ class MongoModuleStore(ModuleStoreDraftAndPublished, ModuleStoreWriteBase, Mongo for key in ('tag', 'org', 'course', 'category', 'name', 'revision') ]) + @autoretry_read() def get_items( self, course_id, diff --git a/common/lib/xmodule/xmodule/modulestore/split_mongo/split.py b/common/lib/xmodule/xmodule/modulestore/split_mongo/split.py index cd0c955591..d37945ecef 100644 --- a/common/lib/xmodule/xmodule/modulestore/split_mongo/split.py +++ b/common/lib/xmodule/xmodule/modulestore/split_mongo/split.py @@ -72,6 +72,7 @@ from xmodule.modulestore.exceptions import InsufficientSpecificationError, Versi from xmodule.modulestore import ( inheritance, ModuleStoreWriteBase, ModuleStoreEnum, BulkOpsRecord, BulkOperationsMixin ) +from xmodule.modulestore.mongodb_proxy import autoretry_read from ..exceptions import ItemNotFoundError from .caching_descriptor_system import CachingDescriptorSystem @@ -775,6 +776,7 @@ class SplitMongoModuleStore(SplitBulkWriteMixin, ModuleStoreWriteBase): # add it in the envelope for the structure. return CourseEnvelope(course_key.replace(version_guid=version_guid), entry) + @autoretry_read() def get_courses(self, branch, **kwargs): ''' Returns a list of course descriptors matching any given qualifiers. @@ -2631,6 +2633,7 @@ class SplitMongoModuleStore(SplitBulkWriteMixin, ModuleStoreWriteBase): """ structure['blocks'][block_key] = content + @autoretry_read() def find_courses_by_search_target(self, field_name, field_value): """ Find all the courses which cached that they have the given field with the given value.