Skip to content

Commit e77ea75

Browse files
dsanders11honzakral
authored andcommitted
Optimistic concurrent control for Document.delete (#1197)
1 parent 2371311 commit e77ea75

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

elasticsearch_dsl/document.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,12 @@ def delete(self, using=None, index=None, **kwargs):
274274
for k in DOC_META_FIELDS
275275
if k in self.meta
276276
}
277+
278+
# Optimistic concurrency control
279+
if 'seq_no' in self.meta and 'primary_term' in self.meta:
280+
doc_meta['if_seq_no'] = self.meta['seq_no']
281+
doc_meta['if_primary_term'] = self.meta['primary_term']
282+
277283
doc_meta.update(kwargs)
278284
es.delete(
279285
index=self._get_index(index),

test_elasticsearch_dsl/test_integration/test_document.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,13 @@ def test_save_automatically_uses_seq_no_and_primary_term(data_client):
288288
with raises(ConflictError):
289289
elasticsearch_repo.save()
290290

291+
def test_delete_automatically_uses_seq_no_and_primary_term(data_client):
292+
elasticsearch_repo = Repository.get('elasticsearch-dsl-py')
293+
elasticsearch_repo.meta.seq_no += 1
294+
295+
with raises(ConflictError):
296+
elasticsearch_repo.delete()
297+
291298
def assert_doc_equals(expected, actual):
292299
for f in expected:
293300
assert f in actual

0 commit comments

Comments
 (0)