fix: remove destructive vector_store.reset() from delete_all() (#4349)
This commit is contained in:
+1
-2
@@ -1047,11 +1047,10 @@ class Memory(MemoryBase):
|
|||||||
|
|
||||||
keys, encoded_ids = process_telemetry_filters(filters)
|
keys, encoded_ids = process_telemetry_filters(filters)
|
||||||
capture_event("mem0.delete_all", self, {"keys": keys, "encoded_ids": encoded_ids, "sync_type": "sync"})
|
capture_event("mem0.delete_all", self, {"keys": keys, "encoded_ids": encoded_ids, "sync_type": "sync"})
|
||||||
# delete all vector memories and reset the collections
|
# delete matching vector memories individually (do NOT reset the collection)
|
||||||
memories = self.vector_store.list(filters=filters)[0]
|
memories = self.vector_store.list(filters=filters)[0]
|
||||||
for memory in memories:
|
for memory in memories:
|
||||||
self._delete_memory(memory.id)
|
self._delete_memory(memory.id)
|
||||||
self.vector_store.reset()
|
|
||||||
|
|
||||||
logger.info(f"Deleted {len(memories)} memories")
|
logger.info(f"Deleted {len(memories)} memories")
|
||||||
|
|
||||||
|
|||||||
@@ -196,12 +196,15 @@ def test_delete_all(memory_instance, version, enable_graph):
|
|||||||
memory_instance.enable_graph = enable_graph
|
memory_instance.enable_graph = enable_graph
|
||||||
mock_memories = [Mock(id="1"), Mock(id="2")]
|
mock_memories = [Mock(id="1"), Mock(id="2")]
|
||||||
memory_instance.vector_store.list = Mock(return_value=(mock_memories, None))
|
memory_instance.vector_store.list = Mock(return_value=(mock_memories, None))
|
||||||
|
memory_instance.vector_store.reset = Mock()
|
||||||
memory_instance._delete_memory = Mock()
|
memory_instance._delete_memory = Mock()
|
||||||
memory_instance.graph.delete_all = Mock()
|
memory_instance.graph.delete_all = Mock()
|
||||||
|
|
||||||
result = memory_instance.delete_all(user_id="test_user")
|
result = memory_instance.delete_all(user_id="test_user")
|
||||||
|
|
||||||
assert memory_instance._delete_memory.call_count == 2
|
assert memory_instance._delete_memory.call_count == 2
|
||||||
|
# Ensure the collection is NOT dropped — only matched memories should be removed
|
||||||
|
memory_instance.vector_store.reset.assert_not_called()
|
||||||
|
|
||||||
if enable_graph:
|
if enable_graph:
|
||||||
memory_instance.graph.delete_all.assert_called_once_with({"user_id": "test_user"})
|
memory_instance.graph.delete_all.assert_called_once_with({"user_id": "test_user"})
|
||||||
|
|||||||
Reference in New Issue
Block a user