From dbf5d2877b37816a385cf1b589607179d5ff41bf Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Thu, 16 Mar 2017 13:01:02 -0400 Subject: [PATCH] logging: return serialization error to callback instead of throwing --- packages/logging/src/log.js | 14 +++++++++++--- packages/logging/test/log.js | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/packages/logging/src/log.js b/packages/logging/src/log.js index 7a59c70919d..00137e324d2 100644 --- a/packages/logging/src/log.js +++ b/packages/logging/src/log.js @@ -630,9 +630,17 @@ Log.prototype.decorateEntries_ = function(entries, callback) { entry = self.entry(entry); } - var decoratedEntry = entry.toJSON({ - removeCircular: self.removeCircular_ - }); + var decoratedEntry; + + try { + decoratedEntry = entry.toJSON({ + removeCircular: self.removeCircular_ + }); + } catch(e) { + callback(e); + return; + } + decoratedEntry.logName = self.formattedName_; self.metadata_.assignDefaultResource(decoratedEntry, function(err, entry) { diff --git a/packages/logging/test/log.js b/packages/logging/test/log.js index b187a315404..3d7841777c2 100644 --- a/packages/logging/test/log.js +++ b/packages/logging/test/log.js @@ -696,6 +696,20 @@ describe('Log', function() { log.decorateEntries_([entry], assert.ifError); }); + it('should exec callback with error from serialization', function(done) { + var error = new Error('Error.'); + + var entry = new Entry(); + entry.toJSON = function() { + throw error; + }; + + log.decorateEntries_([entry], function(err) { + assert.strictEqual(err, error); + done(); + }); + }); + it('should assign the log name', function(done) { log.decorateEntries_([{}], function(err, decoratedEntries) { assert.ifError(err);