Skip to content
This repository was archived by the owner on Dec 21, 2018. It is now read-only.

Commit

Permalink
Update dataflow error handling.
Browse files Browse the repository at this point in the history
  • Loading branch information
jheer committed Jul 11, 2017
1 parent 280ebc3 commit c6eae4b
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 17 deletions.
15 changes: 7 additions & 8 deletions src/Dataflow.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,13 @@ function logMethod(method) {
};
}

/**
* Logs an error message. By default, logged messages are written to console
* output. The message will only be logged if the current log level is high
* enough to permit error messages.
*/
prototype.error = logMethod('error');

/**
* Logs a warning message. By default, logged messages are written to console
* output. The message will only be logged if the current log level is high
Expand Down Expand Up @@ -135,11 +142,3 @@ prototype.debug = logMethod('debug');
* @return {number} - The current log level.
*/
prototype.logLevel = logMethod('level');

/**
* Handle an error. By default, this method re-throws the input error.
* This method can be overridden for custom error handling.
*/
prototype.error = function(err) {
throw err;
};
9 changes: 7 additions & 2 deletions src/dataflow/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,13 @@ export default function(source, type, filter, apply) {
s = stream(filter, apply),
send = function(e) {
e.dataflow = df;
s.receive(e);
df.run();
try {
s.receive(e);
} catch (error) {
df.error(error);
} finally {
df.run();
}
},
sources;

Expand Down
4 changes: 2 additions & 2 deletions src/dataflow/load.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ export function request(target, url, format) {
df.ingest(target, data, format);
},
function(error) {
df.warn('Loading failed: ' + url, error);
df.error('Loading failed: ' + url, error);
pending.done();
})
.then(pending.done)
.catch(function(error) { df.warn(error); });
.catch(function(error) { df.error(error); });
}
1 change: 1 addition & 0 deletions src/dataflow/run.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ export function run(encode) {

if (df._pulse) {
df.error('Dataflow invoked recursively. Use the runAfter method to queue invocation.');
return 0;
}

if (!df._touched.length) {
Expand Down
7 changes: 2 additions & 5 deletions test/core/dataflow-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,10 @@ tape('Dataflow handles errors', function(test) {
var df = new vega.Dataflow(),
error = 0;

df.error = function() { error = 1; };
df.add(function() { throw Error('!!!') });

try {
df.run();
} catch (err) {
error = 1;
}
df.run();

test.equal(error, 1);
test.equal(df._pulse, null);
Expand Down
2 changes: 2 additions & 0 deletions test/transforms/prefacet-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ tape('PreFacet raises error if tuple sets are modified', function(test) {
var tuples = util.field('tuples'),
df = new vega.Dataflow(),
source = df.add(Collect);

df.error = function(e) { throw e; };
df.add(PreFacet, {subflow:subflow, field:tuples, pulse:source});

// -- add
Expand Down

0 comments on commit c6eae4b

Please sign in to comment.