Make initializeMessageQueueThreads() thread safe

Summary:
**Context:**
Issue:
```java.lang.IllegalStateException: Message queue threads already initialized
	at com.facebook.react.bridge.ReactContext.initializeMessageQueueThreads(ReactContext.java:100)
```

Possible root cause:
1, ReactContext.initializeMessageQueueThreads() can be called from different threads, so it's not thread safe
2, ReactContext.initializeMessageQueueThreads() is called again without detroying the threads.

**Fix:**
Make initializeMessageQueueThreads() thread safe. If this won't fix T93983690, I'll continue investigating with possible root cause 2.

Changelog:
[Android][Changed] - Make initializeMessageQueueThreads() thread safe

Reviewed By: GijsWeterings

Differential Revision: D29877386

fbshipit-source-id: 11b32c7184e9e8d6f882474fd607538df12276b7
This commit is contained in:
Lulu Wu
2021-07-26 03:33:19 -07:00
committed by Facebook GitHub Bot
parent 7929551623
commit a480346ee0
@@ -89,11 +89,8 @@ public class ReactContext extends ContextWrapper {
initializeMessageQueueThreads(queueConfig);
}
/**
* Initialize message queue threads using a ReactQueueConfiguration. TODO (janzer) T43898341 Make
* this package instead of public
*/
public void initializeMessageQueueThreads(ReactQueueConfiguration queueConfig) {
/** Initialize message queue threads using a ReactQueueConfiguration. */
public synchronized void initializeMessageQueueThreads(ReactQueueConfiguration queueConfig) {
if (mUiMessageQueueThread != null
|| mNativeModulesMessageQueueThread != null
|| mJSMessageQueueThread != null) {