fix: prevent timestamp collision in ChatMessage ID generation (issue #449) #450
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #449
In redisvl/extensions/message_history/schema.py, the ChatMessage class generates IDs using only the session tag and timestamp:
values[ID_FIELD_NAME] = f"{values[SESSION_FIELD_NAME]}:{values[TIMESTAMP_FIELD_NAME]}"When multiple messages are added rapidly (e.g., via add_messages(messages) or store(prompt, response)), they can receive the same timestamp, resulting in identical IDs. Since Redis uses these IDs as keys, newer messages overwrite older ones with the same ID, causing message loss.
Fix: