diff --git a/ipaacalib/python/src/ipaaca/payload.py b/ipaacalib/python/src/ipaaca/payload.py index 054165afa327ad4a17763d1fa303d900192b2fa6..f7e750dde99af8b3767b82c0a0378ef5a39b4d41 100644 --- a/ipaacalib/python/src/ipaaca/payload.py +++ b/ipaacalib/python/src/ipaaca/payload.py @@ -96,6 +96,8 @@ class Payload(dict): else: # Collect additions/modifications self._batch_update_writer_name = writer_name 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) def __delitem__(self, k, writer_name=None): @@ -110,6 +112,8 @@ class Payload(dict): else: # Collect additions/modifications self._batch_update_writer_name = writer_name 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) # Context-manager based batch updates, not thread-safe (on remote updates)