From 38486dcbba25c04a2cb97f7e0d6f8e32d1991d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Bigio?= Date: Fri, 15 Jan 2016 10:31:22 -0800 Subject: [PATCH] Throw if there's an error persisting the cache Reviewed By: davidaurelio Differential Revision: D2824116 fb-gh-sync-id: 46b3c51a11d22e2da750f9c5a4b431a88004cd81 --- .../src/DependencyResolver/Cache/index.js | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packager/react-packager/src/DependencyResolver/Cache/index.js b/packager/react-packager/src/DependencyResolver/Cache/index.js index 3f601bd49..02384a202 100644 --- a/packager/react-packager/src/DependencyResolver/Cache/index.js +++ b/packager/react-packager/src/DependencyResolver/Cache/index.js @@ -109,18 +109,18 @@ class Cache { return this._persisting; } - var data = this._data; - var cacheFilepath = this._cacheFilePath; + const data = this._data; + const cacheFilepath = this._cacheFilePath; - var allPromises = getObjectValues(data) + const allPromises = getObjectValues(data) .map(record => { - var fieldNames = Object.keys(record.data); - var fieldValues = getObjectValues(record.data); + const fieldNames = Object.keys(record.data); + const fieldValues = getObjectValues(record.data); return Promise .all(fieldValues) .then(ref => { - var ret = Object.create(null); + const ret = Object.create(null); ret.metadata = record.metadata; ret.data = Object.create(null); fieldNames.forEach((field, index) => @@ -134,18 +134,22 @@ class Cache { this._persisting = Promise.all(allPromises) .then(values => { - var json = Object.create(null); + const json = Object.create(null); Object.keys(data).forEach((key, i) => { - if (!values[i]) { + // make sure the key wasn't added nor removed after we started + // persisting the cache + const value = values[i]; + if (!value) { return; } json[key] = Object.create(null); json[key].metadata = data[key].metadata; - json[key].data = values[i].data; + json[key].data = value.data; }); return Promise.denodeify(fs.writeFile)(cacheFilepath, JSON.stringify(json)); }) + .catch(e => console.error('Error while persisting cache:', e.message)) .then(() => { this._persisting = null; return true;