mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Stop requiring TurboModuleManager JSIModule on CatalystInstance cleanup
Summary: In `CatalystInstanceImpl.destroy()`, we require the TurboModuleManager using the [following lines](https://fburl.com/diffusion/a4y6wbft): ``` final JSIModule turboModuleManager = ReactFeatureFlags.useTurboModules ? mJSIModuleRegistry.getModule(JSIModuleType.TurboModuleManager) : null; ``` For some strange reason, even though `ReactFeatureFlags.useTurboModules` is true, the TurboModuleManager isn't registered with mJSIModuleRegistry. I spent some time looking through the code, but I couldn't figure out why. These lines actually aren't necessary, so it's possible to fix the issue by simply working around it, which is what this diff does. We shouldn't have been double requiring the TurboModuleManager anyways, since `CatalystInstance.java` has a method to set the TurboModuleManager, which we call in `ReactInstanceManager.createReactContext`. ## Alternative approach I could push this diff to the next cut, and instead land a diff that adds debug information to the native crash. At the cost of a week, it may help us figure out why we're seeing the crash. Thoughts? cc fkgozali Reviewed By: fkgozali Differential Revision: D17636604 fbshipit-source-id: ecfff593dc6eb4ec4d5e331348b308bc7ab37966
This commit is contained in:
committed by
Facebook Github Bot
parent
1452954c4c
commit
42dcfab2a9
@@ -23,7 +23,6 @@ import com.facebook.react.bridge.queue.ReactQueueConfigurationImpl;
|
||||
import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec;
|
||||
import com.facebook.react.common.ReactConstants;
|
||||
import com.facebook.react.common.annotations.VisibleForTesting;
|
||||
import com.facebook.react.config.ReactFeatureFlags;
|
||||
import com.facebook.react.module.annotations.ReactModule;
|
||||
import com.facebook.react.turbomodule.core.CallInvokerHolderImpl;
|
||||
import com.facebook.react.turbomodule.core.interfaces.TurboModule;
|
||||
@@ -101,6 +100,7 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
|
||||
private JavaScriptContextHolder mJavaScriptContextHolder;
|
||||
private @Nullable TurboModuleRegistry mTurboModuleRegistry = null;
|
||||
private @Nullable JSIModule mTurboModuleManagerJSIModule = null;
|
||||
|
||||
// C++ parts
|
||||
private final HybridData mHybridData;
|
||||
@@ -353,11 +353,6 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
}
|
||||
}
|
||||
|
||||
final JSIModule turboModuleManager =
|
||||
ReactFeatureFlags.useTurboModules
|
||||
? mJSIModuleRegistry.getModule(JSIModuleType.TurboModuleManager)
|
||||
: null;
|
||||
|
||||
getReactQueueConfiguration()
|
||||
.getJSQueueThread()
|
||||
.runOnQueue(
|
||||
@@ -365,8 +360,8 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
@Override
|
||||
public void run() {
|
||||
// We need to destroy the TurboModuleManager on the JS Thread
|
||||
if (turboModuleManager != null) {
|
||||
turboModuleManager.onCatalystInstanceDestroy();
|
||||
if (mTurboModuleManagerJSIModule != null) {
|
||||
mTurboModuleManagerJSIModule.onCatalystInstanceDestroy();
|
||||
}
|
||||
|
||||
getReactQueueConfiguration()
|
||||
@@ -563,8 +558,9 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
}
|
||||
}
|
||||
|
||||
public void setTurboModuleManager(JSIModule getter) {
|
||||
mTurboModuleRegistry = (TurboModuleRegistry) getter;
|
||||
public void setTurboModuleManager(JSIModule module) {
|
||||
mTurboModuleRegistry = (TurboModuleRegistry) module;
|
||||
mTurboModuleManagerJSIModule = module;
|
||||
}
|
||||
|
||||
private void decrementPendingJSCalls() {
|
||||
|
||||
Reference in New Issue
Block a user