Files
StreamLens/FRAME_REFERENCE_FIX_SUMMARY.md

2.4 KiB
Raw Permalink Blame History

Frame Reference Fix Summary

Issue Resolution

Fixed timing outlier detection to properly track frame references within subflows.

Root Causes Identified and Fixed:

1. Race Conditions in Parallel Processing FIXED

  • Issue: Multi-threaded background processing caused frame references to get mixed up
  • Symptom: Frame 2002 showing previous frame 298 instead of 1998
  • Fix: Changed BackgroundAnalyzer from num_threads=4 to num_threads=1
  • Files: background_analyzer.py, app_v2.py
  • Issue: Similar CH10 frames were being classified into different frame types
  • Symptom: Frame 486 showing previous frame 471 instead of 485 (frame 485 was CH10-Multi-Source)
  • Fix: Modified frame classification to group similar CH10 timing frames as CH10-Data
  • Files: flow_manager.py

3. Extended Timing Frames Excluded from Data Stream FIXED

  • Issue: Extended Timing frames were classified separately despite having same ~100ms timing
  • Symptom: Frame 476 showing previous frame 471 instead of 475 (frame 475 was CH10-Extended)
  • Fix: Removed separate CH10-Extended classification, grouped with CH10-Data
  • Files: flow_manager.py

Technical Implementation:

Enhanced Outlier Tracking

  • Added enhanced_outlier_details: List[Tuple[int, int, float]] storing (frame_num, prev_frame_num, delta_t)
  • Updated outlier detection to populate enhanced details with correct frame references
  • Modified TUI to use frame-type outliers instead of flow-level outliers

Single-Threaded Processing

  • BackgroundAnalyzer now defaults to num_threads=1 to prevent race conditions
  • TUI updated to use single-threaded analyzer
  • Maintains deterministic frame processing order

Unified Frame Classification

  • CH10 frames with similar timing patterns now grouped as CH10-Data
  • Only frames with significantly different timing kept separate (ACTTS, etc.)
  • Ensures consecutive frames in same subflow are properly tracked

Final Results:

  • Frame 476: Now correctly shows "from 475" instead of "from 471"
  • Frame 486: No longer an outlier (timing is normal in sequence)
  • Frame 957: No longer an outlier (timing is normal in sequence)
  • Only 2 legitimate outliers remain: Frames 1582 and 1640 with ~1100ms delays (23.2σ)

Verification:

All frame reference validation tests pass with 🎉 ALL FRAME REFERENCES ARE CORRECT!