Fix NaN handling in ttftBucketIndex - #1284
Open
pavankumar-vh wants to merge 1 commit into
Open
Conversation
The function didn't validate that ttftMs is a finite number. If ttftMs was NaN, Math.max(NaN, 1) would return NaN, causing Math.log(NaN) to return NaN, and the entire calculation would produce NaN. Fixed by: - Special-casing only Number.isNaN(ttftMs) → 0 (not all non-finite values) - Letting Infinity flow through the normal path (Math.max/Math.log) which correctly clamps it to the top bucket via Math.min - Preserving correct behavior: NaN → bucket 0, ±Infinity → appropriate buckets Added test coverage for: - NaN input → bucket 0 - ±Infinity input → appropriate buckets (0 for -Infinity, top for +Infinity) - Normal values work as before The existing test suite (11 tests, 995 assertions) passes with this change. All 12 tests pass now.
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.
Overview
Fix NaN handling in the
ttftBucketIndexfunction incommon/src/util/ttft-histogram.ts.Bug Description
The function didn't validate that ttftMs is a finite number. If ttftMs was
NaN, Math.max(NaN, 1) would return NaN, causing Math.log(NaN) to return NaN,
and the entire calculation would produce NaN.
Fix
correctly clamps it to the top bucket via Math.min
Testing
The existing comprehensive test suite (11 tests, 995 assertions) was extended
with 1 new test case verifying:
All 12 tests pass.
Files Changed
common/src/util/ttft-histogram.ts- Fixed NaN/Infinity handlingcommon/src/util/__tests__/ttft-histogram.test.ts- Added test coverageScope
This change only touches
common/which is an approved contribution area per the Contributing Guide.