Skip to content

Commit c3c28c8

Browse files
committed
Added a threading lock to InMemoryMessageHistory
1 parent b2e94d8 commit c3c28c8

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/neo4j_graphrag/message_history.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
15+
import threading
1516
from abc import ABC, abstractmethod
1617
from typing import List, Optional, Union
1718

@@ -93,20 +94,25 @@ class InMemoryMessageHistory(MessageHistory):
9394
"""
9495

9596
def __init__(self, messages: Optional[List[LLMMessage]] = None) -> None:
97+
self._lock = threading.Lock()
9698
self._messages = messages or []
9799

98100
@property
99101
def messages(self) -> List[LLMMessage]:
100-
return self._messages
102+
with self._lock:
103+
return self._messages.copy()
101104

102105
def add_message(self, message: LLMMessage) -> None:
103-
self._messages.append(message)
106+
with self._lock:
107+
self._messages.append(message)
104108

105109
def add_messages(self, messages: List[LLMMessage]) -> None:
106-
self._messages.extend(messages)
110+
with self._lock:
111+
self._messages.extend(messages)
107112

108113
def clear(self) -> None:
109-
self._messages = []
114+
with self._lock:
115+
self._messages = []
110116

111117

112118
class Neo4jMessageHistory(MessageHistory):

0 commit comments

Comments
 (0)