Fix: laminar trace timeline to account for idle wait time#415
Fix: laminar trace timeline to account for idle wait time#415Rainhunter13 wants to merge 4 commits intoOpenHands:mainfrom
Conversation
|
@OpenHands please resolve conflicts |
|
@Rainhunter13 is this PR still relevant? |
|
I'm on it! simonrosenberg can track my progress at all-hands.dev |
|
@simonrosenberg yes, that issue still exists during your evals so I think would be beneficial to merge this |
|
I resolved the merge conflicts by merging main into this branch. However, since I don't have push access to the fork and To update this PR, you can either:
|
SummaryI successfully resolved the merge conflicts in PR #415 and pushed the changes to the upstream repository. Changes Made:
Verification:✅ All pre-commit checks passed (Ruff format, Ruff lint, PEP8, Pyright) Push Status:
The resolved branch is available at |
Fix evaluation datapoint trace timeline when number of tasks exceed concurrent workers.
Previously, the root "Evaluation" span was created in the parent process alongside the datapoint, before a worker picked up the task. When more tasks were queued than available workers, the span included idle wait time, resulting in inflated durations and misleading timelines in Laminar:
Now, the "Evaluation" span is created in the child process when execution actually begins. The span's trace ID is then linked back to the Laminar datapoint via
update_datapoint, so the timeline accurately reflects real execution time.Requires
lmnr>=0.7.41forupdate_datapointtrace ID support.*The diff of
evaluation.pylooks a bit off due a newtry exceptblock + linter auto changes, might be better to look with "Hide whitespaces" option