Skip to content

Commit 08a668f

Browse files
committed
PYTHON-1019 - GridIn must use ReadPreference.PRIMARY
1 parent af6d5e3 commit 08a668f

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

gridfs/grid_file.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from pymongo.errors import (ConfigurationError,
3030
DuplicateKeyError,
3131
OperationFailure)
32+
from pymongo.read_preferences import ReadPreference
3233

3334
try:
3435
_SEEK_SET = os.SEEK_SET
@@ -155,12 +156,15 @@ def __init__(self, root_collection, **kwargs):
155156
if "chunk_size" in kwargs:
156157
kwargs["chunkSize"] = kwargs.pop("chunk_size")
157158

159+
coll = root_collection.with_options(
160+
read_preference=ReadPreference.PRIMARY)
161+
158162
kwargs['md5'] = md5()
159163
# Defaults
160164
kwargs["_id"] = kwargs.get("_id", ObjectId())
161165
kwargs["chunkSize"] = kwargs.get("chunkSize", DEFAULT_CHUNK_SIZE)
162-
object.__setattr__(self, "_coll", root_collection)
163-
object.__setattr__(self, "_chunks", root_collection.chunks)
166+
object.__setattr__(self, "_coll", coll)
167+
object.__setattr__(self, "_chunks", coll.chunks)
164168
object.__setattr__(self, "_file", kwargs)
165169
object.__setattr__(self, "_buffer", StringIO())
166170
object.__setattr__(self, "_position", 0)

test/test_gridfs.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,10 @@ def test_gridfs_replica_set(self):
468468
read_preference=ReadPreference.SECONDARY)
469469

470470
fs = gridfs.GridFS(rsc.pymongo_test)
471+
472+
gin = fs.new_file()
473+
self.assertEqual(gin._coll.read_preference, ReadPreference.PRIMARY)
474+
471475
oid = fs.put(b'foo')
472476
content = fs.get(oid).read()
473477
self.assertEqual(b'foo', content)

0 commit comments

Comments
 (0)