react / react/react-native

Performance logger does not automatically clean up timespan object properties, resulting in stoppage of XHR requests

Open
#41,180 1 comment 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

🌐Networking Issue: Author Provided Repro Needs: Triage :mag:
Dominant language
C++
Stars
127k
Forks
25.3k
Avg merge
1d 23h
Merged PRs (30d)
4

Description

Description

As previously reported here - https://github.com/facebook/react-native/issues/30288

Once the limit has been reached, no new XHR's can be made. Each will throw Property storage exceeds 196607 properties

React Native Version

0.72.6

Output of npx react-native info
info Fetching system and libraries information...
System:
  OS: macOS 13.5.2
  CPU: (10) arm64 Apple M1 Pro
  Memory: 205.81 MB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 16.16.0
    path: /usr/local/bin/node
  Yarn:
    version: 1.22.15
    path: /usr/local/bin/yarn
  npm:
    version: 8.11.0
    path: /usr/local/bin/npm
  Watchman:
    version: 2023.09.04.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.11.3
    path: /Users/mvestal/.rvm/gems/ruby-3.0.0/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 22.4
      - iOS 16.4
      - macOS 13.3
      - tvOS 16.4
      - watchOS 9.4
  Android SDK: Not Found
IDEs:
  Android Studio: 2021.2 AI-212.5712.43.2112.8815526
  Xcode:
    version: 14.3.1/14E300c
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 11.0.16
    path: /usr/bin/javac
  Ruby:
    version: 3.0.0
    path: /Users/mvestal/.rvm/rubies/ruby-3.0.0/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.72.6
    wanted: 0.72.6
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: false
Steps to reproduce

Make 196608 XMLHttpRequests with unique URLs.

Snack, screenshot, or link to a repository

https://snack.expo.dev/R1hc74OsN

Screenshot 2023-10-24 at 4 00 07 PM

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read the XMLHttpRequest.js startTimepan call at lines 568-569 and the timespan creation in createPerformanceLogger.js at lines 291-294. Reproduce the issue with 196608 XMLHttpRequests using unique URLs, then verify that timespan properties no longer accumulate until new XHR requests fail with the Hermes property-limit error.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, react-native
Domain
mobile-dev, networking, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.