Fix exception handling so that we will retry the build after an exception
authorNick Downing <downing.nick@gmail.com>
Tue, 9 Oct 2018 02:44:22 +0000 (13:44 +1100)
committerNick Downing <downing.nick@gmail.com>
Tue, 9 Oct 2018 02:44:22 +0000 (13:44 +1100)
build_cache.js

index a2e31d5..ae88cb5 100644 (file)
@@ -18,7 +18,14 @@ BuildCache.prototype.get = async function(key, build_func) {
     result = {deps: [key], time: Date.now()}
     result.done = build_func(result)
     this.map.set(key, result)
-    await result.done
+    try {
+      await result.done
+    }
+    catch (err) {
+      delete result.done
+      this.map.delete(key)
+      throw err
+    }
     delete result.done
   }
   else if (result.done === undefined) {
@@ -39,7 +46,14 @@ BuildCache.prototype.get = async function(key, build_func) {
         }
       }
     )()
-    await result.done
+    try {
+      await result.done
+    }
+    catch (err) {
+      delete result.done
+      this.map.delete(key)
+      throw err
+    }
     delete result.done
   }
   else