Skip to content
Snippets Groups Projects
Commit d73e8cf9 authored by Ramin Yaghoubzadeh Torky's avatar Ramin Yaghoubzadeh Torky
Browse files

Python: batch updates: updates invalidate older removals and vice versa

parent bec99adf
No related branches found
No related tags found
No related merge requests found
...@@ -96,6 +96,8 @@ class Payload(dict): ...@@ -96,6 +96,8 @@ class Payload(dict):
else: # Collect additions/modifications else: # Collect additions/modifications
self._batch_update_writer_name = writer_name self._batch_update_writer_name = writer_name
self._collected_modifications[k] = v self._collected_modifications[k] = v
# revoke deletion of item since a new version has been added
self._collected_removals = [i for i in self._collected_removals if i!=k]
return dict.__setitem__(self, k, v) return dict.__setitem__(self, k, v)
def __delitem__(self, k, writer_name=None): def __delitem__(self, k, writer_name=None):
...@@ -110,6 +112,8 @@ class Payload(dict): ...@@ -110,6 +112,8 @@ class Payload(dict):
else: # Collect additions/modifications else: # Collect additions/modifications
self._batch_update_writer_name = writer_name self._batch_update_writer_name = writer_name
self._collected_removals.append(k) self._collected_removals.append(k)
# revoke older update of item since more recent changes take precedence
if k in self._collected_modifications: del self._collected_modifications[k]
return dict.__delitem__(self, k) return dict.__delitem__(self, k)
# Context-manager based batch updates, not thread-safe (on remote updates) # Context-manager based batch updates, not thread-safe (on remote updates)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment