From cfebad97b27c6c1409ff799727466b1977d6a57a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Gregorczyk?= Date: Mon, 24 Oct 2016 23:01:51 -0700 Subject: [PATCH] Synchronize before acquiring file lock Reviewed By: dcaspi Differential Revision: D4071662 fbshipit-source-id: 3458ff103fddb82a7588d7890f8bc931c0e19e14 --- .../react/cxxbridge/UnpackingJSBundleLoader.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UnpackingJSBundleLoader.java b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UnpackingJSBundleLoader.java index 9465c4b4cb..f3ad069996 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UnpackingJSBundleLoader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/UnpackingJSBundleLoader.java @@ -91,12 +91,16 @@ public class UnpackingJSBundleLoader extends JSBundleLoader { final File lockFilePath = new File(mContext.getFilesDir(), LOCK_FILE); Systrace.beginSection(TRACE_TAG_REACT_JAVA_BRIDGE, "UnpackingJSBundleLoader.prepare"); - try (FileLocker lock = FileLocker.lock(lockFilePath)) { - unpacked = prepareLocked(); - } catch (IOException ioe) { - throw new RuntimeException(ioe); - } finally { - Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + + // Make sure we don't release the lock by letting other thread close the lock file + synchronized(UnpackingJSBundleLoader.class) { + try (FileLocker lock = FileLocker.lock(lockFilePath)) { + unpacked = prepareLocked(); + } catch (IOException ioe) { + throw new RuntimeException(ioe); + } finally { + Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + } } if (unpacked && mOnUnpackedCallback != null) {