From 48346cddb99d56bfce41e05259c65dca8c91e5da Mon Sep 17 00:00:00 2001 From: Alaeddine Abdessalem Date: Thu, 3 Nov 2022 17:18:21 +0100 Subject: [PATCH] perf: sync sub index only when parent is synced --- docarray/array/storage/base/getsetdel.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docarray/array/storage/base/getsetdel.py b/docarray/array/storage/base/getsetdel.py index 682b6964cb2..ed9db6558a6 100644 --- a/docarray/array/storage/base/getsetdel.py +++ b/docarray/array/storage/base/getsetdel.py @@ -199,15 +199,13 @@ def _update_subindices_set(self, set_index, docs): _check_valid_values_nested_set(self[set_index], docs) if set_index in subindices: subindex_da = subindices[set_index] - with subindex_da: - subindex_da.clear() - subindex_da.extend(docs) + subindex_da.clear() + subindex_da.extend(docs) else: # root level set, update subindices iteratively for subindex_selector, subindex_da in subindices.items(): old_ids = DocumentArray(self[set_index])[subindex_selector, 'id'] - with subindex_da: - del subindex_da[old_ids] - subindex_da.extend(DocumentArray(docs)[subindex_selector]) + del subindex_da[old_ids] + subindex_da.extend(DocumentArray(docs)[subindex_selector]) def _set_docs(self, ids, docs: Iterable['Document']): docs = list(docs) @@ -328,3 +326,7 @@ def _save_offset2ids(self): def sync(self): if hasattr(self, '_offset2ids'): self._save_offset2ids() + + if getattr(self, '_subindices', None): + for selector, da in self._subindices.items(): + da.sync()