Turn errors from scripts and extensions into faults

This commit is contained in:
Zaid Abdulla committed 2016-12-04 19:04:22 -08:00
1 parent 7ac94a5304
commit 9f85ead558
8 files changed
+254 -105

No files matched your search

+22 -6
View File
@@ -204,6 +204,22 @@ Object.defineProperty(sandbox.context, 'commit', {value: commit});
Object.defineProperty(sandbox.context, 'ext', {value: ext});
function errorToFault(err) {
if (!err)
return null;
return {
code: `script.${err.name}`,
message: err.message,
detail: {
name: err.name,
message: err.message,
stack: err.stack
}
}
}
function run(script, globals, timestamp, deviceData, extensionsCache, startRevision, maxRevision, callback) {
sandbox.timestamp = timestamp;
sandbox.deviceData = deviceData;
@@ -233,7 +249,7 @@ function run(script, globals, timestamp, deviceData, extensionsCache, startRevis
else if (err === EXT)
status = 2;
else
return callback(err);
return callback(null, errorToFault(err));
}
let ext = sandbox.extensions;
@@ -245,17 +261,17 @@ function run(script, globals, timestamp, deviceData, extensionsCache, startRevis
let counter = 1;
for (let key in sandbox.extensions) {
++ counter;
extensions.run(sandbox.extensions[key], function(err, res) {
if (err && counter > 0) {
extensions.run(sandbox.extensions[key], function(err, fault, res) {
if ((err || fault) && counter > 0) {
counter = 0;
return callback(err);
return callback(err, fault);
}
extCache[key] = res;
if (-- counter === 0)
if (status === 2)
return run.apply(null, args);
else
return callback(null, clr, decs, status === 0, ret);
return callback(null, null, clr, decs, status === 0, ret);
});
}
@@ -263,7 +279,7 @@ function run(script, globals, timestamp, deviceData, extensionsCache, startRevis
if (status === 2)
return run.apply(null, args);
else
return callback(null, clr, decs, status === 0, ret);
return callback(null, null, clr, decs, status === 0, ret);
}