From cd1f5fd04a74d61365b537170e03047593fe1c91 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Oct 2017 09:46:04 -0600 Subject: [PATCH 1/8] Return after rejecting, catch and log --- src/server.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/server.js b/src/server.js index 06164ee..f889999 100644 --- a/src/server.js +++ b/src/server.js @@ -246,8 +246,9 @@ function start(opts) { startupPromises.push(new Promise(function(resolve, reject) { fs.readFile(templateFile, function(err, content) { if (err) { - console.error('Template not found:', err); + err = new Error('Template not found: ' + err.message); reject(err); + return; } var compiled = handlebars.compile(content.toString()); @@ -415,6 +416,11 @@ function start(opts) { module.exports = function(opts) { var running = start(opts); + running.startupPromise.catch(function(err) { + console.error(err.message); + process.exit(1); + }); + process.on('SIGINT', function() { process.exit(); }); From c060dedf20b3284f6ca673d9c8ad445bb4bf4b86 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Oct 2017 09:52:39 -0600 Subject: [PATCH 2/8] Avoid swallowing rejected font loading promise --- src/serve_rendered.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 10ef459..7383854 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -740,9 +740,8 @@ module.exports = function(options, repo, params, id, dataResolver) { return res.send(info); }); - return new Promise(function(resolve, reject) { - Promise.all([fontListingPromise, renderersReadyPromise]).then(function() { - resolve(app); - }); + return Promise.all([fontListingPromise, renderersReadyPromise]).then(function() { + return app; }); + }; From 3d48485475ccef60f110dbd1ae1655b4be5bd02f Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Oct 2017 09:55:05 -0600 Subject: [PATCH 3/8] Reject on font loading error --- src/serve_rendered.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 7383854..cdd4296 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -122,12 +122,18 @@ module.exports = function(options, repo, params, id, dataResolver) { var existingFonts = {}; var fontListingPromise = new Promise(function(resolve, reject) { fs.readdir(options.paths.fonts, function(err, files) { + if (err) { + reject(err); + return; + } files.forEach(function(file) { fs.stat(path.join(options.paths.fonts, file), function(err, stats) { - if (!err) { - if (stats.isDirectory()) { - existingFonts[path.basename(file)] = true; - } + if (err) { + reject(err); + return; + } + if (stats.isDirectory()) { + existingFonts[path.basename(file)] = true; } }); }); From f5450769861b870263b1dbdc5733ca3eee5fd400 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Oct 2017 09:57:08 -0600 Subject: [PATCH 4/8] Avoid swallowing rejected source info promise --- src/serve_data.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/serve_data.js b/src/serve_data.js index 5c51cde..6857b39 100644 --- a/src/serve_data.js +++ b/src/serve_data.js @@ -176,9 +176,7 @@ module.exports = function(options, repo, params, id, styles) { return res.send(info); }); - return new Promise(function(resolve, reject) { - sourceInfoPromise.then(function() { - resolve(app); - }); + return sourceInfoPromise.then(function() { + return app; }); }; From 5ed632c229f39d4f2b8f9c3be2460c13aed04a1f Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Oct 2017 09:58:15 -0600 Subject: [PATCH 5/8] Reject source info promise on error --- src/serve_data.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/serve_data.js b/src/serve_data.js index 6857b39..4acda69 100644 --- a/src/serve_data.js +++ b/src/serve_data.js @@ -37,7 +37,15 @@ module.exports = function(options, repo, params, id, styles) { var source; var sourceInfoPromise = new Promise(function(resolve, reject) { source = new mbtiles(mbtilesFile, function(err) { + if (err) { + reject(err); + return; + } source.getInfo(function(err, info) { + if (err) { + reject(err); + return; + } tileJSON['name'] = id; tileJSON['format'] = 'pbf'; From 650718e0f67a21e6f3b63705f95ba11cb9cea4f8 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Oct 2017 09:59:12 -0600 Subject: [PATCH 6/8] Avoid swallowing rejected font listing promise --- src/serve_font.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/serve_font.js b/src/serve_font.js index dbd25e9..84df0ce 100644 --- a/src/serve_font.js +++ b/src/serve_font.js @@ -54,9 +54,7 @@ module.exports = function(options, allowedFonts) { ); }); - return new Promise(function(resolve, reject) { - fontListingPromise.then(function() { - resolve(app); - }); + return fontListingPromise.then(function() { + return app; }); }; From e11c8f931552c511ae6be3463e4ff7040fc2bf2d Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Oct 2017 10:00:08 -0600 Subject: [PATCH 7/8] Reject font listing promise on error --- src/serve_font.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/serve_font.js b/src/serve_font.js index 84df0ce..b9ec76e 100644 --- a/src/serve_font.js +++ b/src/serve_font.js @@ -17,13 +17,19 @@ module.exports = function(options, allowedFonts) { var existingFonts = {}; var fontListingPromise = new Promise(function(resolve, reject) { fs.readdir(options.paths.fonts, function(err, files) { + if (err) { + reject(err); + return; + } files.forEach(function(file) { fs.stat(path.join(fontPath, file), function(err, stats) { - if (!err) { - if (stats.isDirectory() && - fs.existsSync(path.join(fontPath, file, '0-255.pbf'))) { - existingFonts[path.basename(file)] = true; - } + if (err) { + reject(err); + return; + } + if (stats.isDirectory() && + fs.existsSync(path.join(fontPath, file, '0-255.pbf'))) { + existingFonts[path.basename(file)] = true; } }); }); From 2f9059d09e132ae02d075f778ee7de04d7e0a36f Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Oct 2017 10:05:30 -0600 Subject: [PATCH 8/8] Unnecessary promise wrapping --- src/utils.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/utils.js b/src/utils.js index a63731e..6335a40 100644 --- a/src/utils.js +++ b/src/utils.js @@ -110,9 +110,7 @@ module.exports.getFontsPbf = function(allowedFonts, fontPath, names, range, fall ); }); - return new Promise(function(resolve, reject) { - Promise.all(queue).then(function(values) { - return resolve(glyphCompose.combine(values)); - }, reject); + return Promise.all(queue).then(function(values) { + return glyphCompose.combine(values); }); };