[bug]: Memory.reset() deletes collection and table without re-creating it (#1952)
This commit is contained in:
@@ -542,7 +542,7 @@ class Memory(MemoryBase):
|
||||
|
||||
try:
|
||||
existing_memory = self.vector_store.get(vector_id=memory_id)
|
||||
except Exception as e:
|
||||
except Exception:
|
||||
raise ValueError(f"Error getting memory with ID {memory_id}. Please provide a valid 'memory_id'")
|
||||
prev_value = existing_memory.payload.get("data")
|
||||
|
||||
@@ -591,6 +591,9 @@ class Memory(MemoryBase):
|
||||
"""
|
||||
logger.warning("Resetting all memories")
|
||||
self.vector_store.delete_col()
|
||||
self.vector_store = VectorStoreFactory.create(
|
||||
self.config.vector_store.provider, self.config.vector_store.config
|
||||
)
|
||||
self.db.reset()
|
||||
capture_event("mem0.reset", self)
|
||||
|
||||
|
||||
@@ -140,3 +140,4 @@ class SQLiteManager:
|
||||
def reset(self):
|
||||
with self.connection:
|
||||
self.connection.execute("DROP TABLE IF EXISTS history")
|
||||
self._create_history_table()
|
||||
|
||||
@@ -5,6 +5,7 @@ import pytest
|
||||
|
||||
from mem0.configs.base import MemoryConfig
|
||||
from mem0.memory.main import Memory
|
||||
from mem0.utils.factory import VectorStoreFactory
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
@@ -171,13 +172,19 @@ def test_delete_all(memory_instance, version, enable_graph):
|
||||
|
||||
def test_reset(memory_instance):
|
||||
memory_instance.vector_store.delete_col = Mock()
|
||||
# persisting vector store to make sure previous collection is deleted
|
||||
initial_vector_store = memory_instance.vector_store
|
||||
memory_instance.db.reset = Mock()
|
||||
|
||||
memory_instance.reset()
|
||||
|
||||
memory_instance.vector_store.delete_col.assert_called_once()
|
||||
memory_instance.db.reset.assert_called_once()
|
||||
with patch.object(VectorStoreFactory, "create", return_value=Mock()) as mock_create:
|
||||
|
||||
memory_instance.reset()
|
||||
|
||||
initial_vector_store.delete_col.assert_called_once()
|
||||
memory_instance.db.reset.assert_called_once()
|
||||
mock_create.assert_called_once_with(
|
||||
memory_instance.config.vector_store.provider, memory_instance.config.vector_store.config
|
||||
)
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"version, enable_graph, expected_result",
|
||||
|
||||
Reference in New Issue
Block a user