Skip to content

fix(streaming): use monotonic clamped latency timings - #42

Merged
sayonfortify merged 1 commit into
fr-v0.52.6.xfrom
fix/streaming-latency-monotonic-clamp
Jun 20, 2026
Merged

fix(streaming): use monotonic clamped latency timings#42
sayonfortify merged 1 commit into
fr-v0.52.6.xfrom
fix/streaming-latency-monotonic-clamp

Conversation

@sayonfortify

Copy link
Copy Markdown

Standardizes FortifyRoot streaming latency elapsed-time measurement for TTFT/STTG across the SDK provider wrappers.

What changed:

  • OpenAI: use time.perf_counter() for chat wrapper streaming/duration elapsed math; clamp elapsed seconds/ms at zero.
  • Anthropic: use perf_counter for streaming start/first/end clocks; clamp TTFT/STTG and duration histogram elapsed values.
  • Bedrock: use perf_counter for stream start/first/end clocks in invoke/converse streaming safety wrappers; clamp TTFT/STTG values.
  • LiteLLM: use perf_counter and clamp elapsed seconds before setting wrapper + canonical attempt span TTFT/STTG attrs.
  • LangChain: SpanHolder start_time uses perf_counter; callback TTFT/STTG and duration math clamps non-negative.
  • Google GenAI and LlamaIndex already used perf_counter + clamp; untouched.

Why:

  • TTFT/STTG are durations and should not use wall-clock time that can jump under NTP/system clock changes.
  • Span attrs should never carry negative latency values.

Tests:

  • python3 -m py_compile on all changed source + test files.
  • conda run -n py3.12 python -m pytest packages/opentelemetry-instrumentation-openai/tests/test_streaming_latency_span_attrs.py -q -> 4 passed
  • conda run -n py3.12 python -m pytest packages/opentelemetry-instrumentation-anthropic/tests/test_safety_unit.py -k 'streaming_latency or latency_span_attrs or clamps_negative_duration' -q -> 4 passed
  • conda run -n py3.12 python -m pytest packages/opentelemetry-instrumentation-bedrock/tests/test_safety_hooks.py -k 'streaming_latency or latency_span_attrs or clamps_negative_duration' -q -> 3 passed
  • conda run -n py3.12 python -m pytest packages/opentelemetry-instrumentation-litellm/tests/test_safety_hooks.py -k 'streaming_latency or latency_attrs or elapsed_seconds_clamps' -q -> 4 passed
  • conda run -n py3.12 python -m pytest packages/opentelemetry-instrumentation-langchain/tests/test_streaming_latency_span_attrs.py -q -> 3 passed

@sayonfortify
sayonfortify merged commit 4197aa4 into fr-v0.52.6.x Jun 20, 2026
10 checks passed
@sayonfortify
sayonfortify deleted the fix/streaming-latency-monotonic-clamp branch June 20, 2026 10:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant