Skip to content

Commit 9cc3652

Browse files
committed
PYTHON-2186 create_indexes raises an error with commitQuorum on <4.4
1 parent 58317a4 commit 9cc3652

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

pymongo/collection.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1900,6 +1900,7 @@ def create_indexes(self, indexes, session=None, **kwargs):
19001900
names = []
19011901
with self._socket_for_writes(session) as sock_info:
19021902
supports_collations = sock_info.max_wire_version >= 5
1903+
supports_quorum = sock_info.max_wire_version >= 9
19031904
def gen_indexes():
19041905
for index in indexes:
19051906
if not isinstance(index, IndexModel):
@@ -1916,6 +1917,11 @@ def gen_indexes():
19161917
cmd = SON([('createIndexes', self.name),
19171918
('indexes', list(gen_indexes()))])
19181919
cmd.update(kwargs)
1920+
if 'commitQuorum' in kwargs and not supports_quorum:
1921+
raise ConfigurationError(
1922+
"Must be connected to MongoDB 4.4+ to use the "
1923+
"commitQuorum option for createIndexes")
1924+
19191925
self._command(
19201926
sock_info, cmd, read_preference=ReadPreference.PRIMARY,
19211927
codec_options=_UNICODE_REPLACE_CODEC_OPTIONS,

test/test_collection.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,20 @@ def test_create_indexes(self):
234234
with self.write_concern_collection() as coll:
235235
coll.create_indexes([IndexModel('hello')])
236236

237+
@client_context.require_version_max(4, 3, -1)
238+
def test_create_indexes_commitQuorum_requires_44(self):
239+
db = self.db
240+
with self.assertRaisesRegex(
241+
ConfigurationError,
242+
'Must be connected to MongoDB 4\.4\+ to use the commitQuorum '
243+
'option for createIndexes'):
244+
db.coll.create_indexes([IndexModel('a')], commitQuorum="majority")
245+
246+
@client_context.require_no_standalone
247+
@client_context.require_version_min(4, 4, -1)
248+
def test_create_indexes_commitQuorum(self):
249+
self.db.coll.create_indexes([IndexModel('a')], commitQuorum="majority")
250+
237251
def test_create_index(self):
238252
db = self.db
239253

0 commit comments

Comments
 (0)