fix: Assume naive datetime as UTC in serialize_datetime#1471
Open
Deng-m1 wants to merge 1 commit intolangfuse:mainfrom
Open
fix: Assume naive datetime as UTC in serialize_datetime#1471Deng-m1 wants to merge 1 commit intolangfuse:mainfrom
Deng-m1 wants to merge 1 commit intolangfuse:mainfrom
Conversation
When a datetime object without timezone info (naive datetime) is passed to serialize_datetime(), it was previously interpreted using the local timezone. This caused timestamp inconsistencies when the SDK runs in non-UTC timezones, leading to: 1. Duplicate trace records in ClickHouse with different toDate(timestamp) 2. ReplacingMergeTree unable to merge records for the same trace ID 3. Incorrect trace rendering in the Langfuse UI This fix changes the behavior to assume naive datetimes are UTC, which is consistent with Langfuse's infrastructure requirements and the internal _get_timestamp() function that already uses UTC. The fix ensures all timestamp serialization uses UTC, preventing the date boundary issues that occur when local time differs from UTC by enough hours to cross midnight. Includes comprehensive test coverage for: - UTC datetime serialization - Non-UTC timezone handling - Naive datetime (now assumed UTC) - Edge cases (midnight, end of day) - ISO 8601 compliance
|
north-al seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
id: 2e0e8e5f811849f5106dc38a584cce27
Row 1: timestamp=2025-12-10 (UTC), name=NULL
Row 2: timestamp=2025-12-11 (local), name=LangGraph ← Different date!
Solution
Assume naive datetime is UTC, consistent with:
_get_timestamp()which already usesdatetime.now(timezone.utc)Testing
Added 11 test cases in
tests/test_datetime_utils.py:_get_timestamp()All tests pass.
Checklist