Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
622ee7a7
Unverified
Commit
622ee7a7
authored
Nov 28, 2017
by
Brian Beggs
Committed by
GitHub
Nov 28, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #16540 from open-craft/mtyaka/mongo-read-preference
Convert mongo read_preference setting at a lower level.
parents
900f066d
abd4859f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
4 deletions
+46
-4
common/lib/xmodule/xmodule/modulestore/django.py
+0
-4
common/lib/xmodule/xmodule/mongo_utils.py
+8
-0
common/lib/xmodule/xmodule/tests/test_mongo_utils.py
+38
-0
No files found.
common/lib/xmodule/xmodule/modulestore/django.py
View file @
622ee7a7
...
...
@@ -24,7 +24,6 @@ import django.dispatch
import
django.utils
from
django.utils.translation
import
get_language
,
to_locale
from
pymongo
import
ReadPreference
from
xmodule.contentstore.django
import
contentstore
from
xmodule.modulestore.draft_and_published
import
BranchSettingMixin
from
xmodule.modulestore.mixed
import
MixedModuleStore
...
...
@@ -278,9 +277,6 @@ def create_modulestore_instance(
else
:
xb_user_service
=
None
if
'read_preference'
in
doc_store_config
:
doc_store_config
[
'read_preference'
]
=
getattr
(
ReadPreference
,
doc_store_config
[
'read_preference'
])
xblock_field_data_wrappers
=
[
load_function
(
path
)
for
path
in
settings
.
XBLOCK_FIELD_DATA_WRAPPERS
]
def
fetch_disabled_xblock_types
():
...
...
common/lib/xmodule/xmodule/mongo_utils.py
View file @
622ee7a7
...
...
@@ -4,6 +4,7 @@ Common MongoDB connection functions.
import
logging
import
pymongo
from
pymongo
import
ReadPreference
from
mongodb_proxy
import
MongoProxy
logger
=
logging
.
getLogger
(
__name__
)
# pylint: disable=invalid-name
...
...
@@ -33,6 +34,13 @@ def connect_to_mongodb(
# No 'replicaSet' in kwargs - so no secondary reads.
mongo_client_class
=
pymongo
.
MongoClient
# If read_preference is given as a name of a valid ReadPreference.<NAME> constant
# such as "SECONDARY_PREFERRED", convert it. Otherwise pass it through unchanged.
if
'read_preference'
in
kwargs
:
read_preference
=
getattr
(
ReadPreference
,
kwargs
[
'read_preference'
],
None
)
if
read_preference
is
not
None
:
kwargs
[
'read_preference'
]
=
read_preference
mongo_conn
=
pymongo
.
database
.
Database
(
mongo_client_class
(
host
=
host
,
...
...
common/lib/xmodule/xmodule/tests/test_mongo_utils.py
0 → 100644
View file @
622ee7a7
"""
Tests for methods defined in mongo_utils.py
"""
import
ddt
import
os
from
unittest
import
TestCase
from
uuid
import
uuid4
from
pymongo
import
ReadPreference
from
django.conf
import
settings
from
xmodule.mongo_utils
import
connect_to_mongodb
@ddt.ddt
class
MongoUtilsTests
(
TestCase
):
"""
Tests for methods exposed in mongo_utils
"""
@ddt.data
(
(
'PRIMARY'
,
'primary'
,
ReadPreference
.
PRIMARY
),
(
'SECONDARY_PREFERRED'
,
'secondaryPreferred'
,
ReadPreference
.
SECONDARY_PREFERRED
),
(
'NEAREST'
,
'nearest'
,
ReadPreference
.
NEAREST
),
)
@ddt.unpack
def
test_connect_to_mongo_read_preference
(
self
,
enum_name
,
mongos_name
,
expected_read_preference
):
"""
Test that read_preference parameter gets converted to a valid pymongo read preference.
"""
host
=
'edx.devstack.mongo'
if
'BOK_CHOY_HOSTNAME'
in
os
.
environ
else
'localhost'
db
=
'test_read_preference_
%
s'
%
uuid4
()
.
hex
# Support for read_preference given in constant name form (ie. PRIMARY, SECONDARY_PREFERRED)
connection
=
connect_to_mongodb
(
db
,
host
,
read_preference
=
enum_name
)
self
.
assertEqual
(
connection
.
client
.
read_preference
,
expected_read_preference
)
# Support for read_preference given as mongos name.
connection
=
connect_to_mongodb
(
db
,
host
,
read_preference
=
mongos_name
)
self
.
assertEqual
(
connection
.
client
.
read_preference
,
expected_read_preference
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment