Skip to content

Commit 82073de

Browse files
author
armando
committed
Do not pass if_seq_no and if_primary_term to request if retry_on_conflict is not none
1 parent 147ff11 commit 82073de

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

elasticsearch_dsl/document.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,11 @@ def update(
406406
doc_meta["retry_on_conflict"] = retry_on_conflict
407407

408408
# Optimistic concurrency control
409-
if "seq_no" in self.meta and "primary_term" in self.meta:
409+
if (
410+
retry_on_conflict in (None, 0)
411+
and "seq_no" in self.meta
412+
and "primary_term" in self.meta
413+
):
410414
doc_meta["if_seq_no"] = self.meta["seq_no"]
411415
doc_meta["if_primary_term"] = self.meta["primary_term"]
412416

tests/test_integration/test_document.py

+14
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,20 @@ def test_update_script(write_client):
234234
assert w.views == 47
235235

236236

237+
def test_update_retry_on_conflict(write_client):
238+
Wiki.init()
239+
w = Wiki(owner=User(name="Honza Kral"), _id="elasticsearch-py", views=42)
240+
w.save()
241+
242+
w1 = Wiki.get(id="elasticsearch-py")
243+
w2 = Wiki.get(id="elasticsearch-py")
244+
w1.update(script="ctx._source.views += params.inc", inc=5, retry_on_conflict=1)
245+
w2.update(script="ctx._source.views += params.inc", inc=5, retry_on_conflict=1)
246+
247+
w = Wiki.get(id="elasticsearch-py")
248+
assert w.views == 52
249+
250+
237251
def test_save_and_update_return_doc_meta(write_client):
238252
Wiki.init()
239253
w = Wiki(owner=User(name="Honza Kral"), _id="elasticsearch-py", views=42)

0 commit comments

Comments
 (0)