Performance logger does not automatically clean up timespan object properties, resulting in stoppage of XHR requests
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C++
- Estrellas
- 127k
- Forks
- 25.3k
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 4
Descripción
Description
As previously reported here - https://github.com/facebook/react-native/issues/30288
- XMLHttpRequest calls
startTimepanusing a key generated from the request URL. - The GlobalPerformanceLogger created by
createPerformanceLoggeradds new timespans using the key, but they are never removed - Hermes limits objects to 196,607 properties
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Lea la llamada a startTimepan en XMLHttpRequest.js en las líneas 568-569 y la creación de timespan en createPerformanceLogger.js en las líneas 291-294. Reproduzca el problema con 196608 XMLHttpRequests utilizando URLs únicas y, a continuación, verifique que las propiedades de timespan ya no se acumulen hasta que las nuevas solicitudes XHR fallen con el Hermes property-limit error.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, react-native
- Área
- mobile-dev, networking, performance
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100