Description
Current behavior
I'm upgrading my RN app from 0.56 to 0.59.3 and decided to move back to the community AsyncStorage solution. The problem I'm running into is that the serial Executor is getting jammed up processing getKey requests after about the 3rd request for a getKey. The result is in the JS side, the Promise never returns and locks up the app.
Expected behavior
The Serial Executor in use by the AsyncStorage solution would process the AsyncStorage request or fail but not go into a locked up state.
Repro steps
In my RN app, I have 4 AsyncStorage getKey requests during startup which all happen in succession. I've never seen the 4th request return. Sometimes I'll see requests 1-3 return before it hangs on the 4th. This happens on the Simulator and on the device. I've only tested on Android 9 sim and Pixel 2 Android 9.
To point to the Serial Executor as the problem, I removed all references to the Serial Executor in the AsyncStorage code base and just let the SQL Lite requests run on the main thread and it works perfectly.
Environment
- Async Storage version: 1.3.3
- React-Native version: 0.59.3
- Platform tested: Android 9 sim and device (iOS sim and device works great)