From 8f3c6c3c87d8c13e8a2a70486e69fa204e175949 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Sat, 15 Feb 2014 08:06:41 +0100 Subject: [PATCH] Add profiler calls in template instanciation endpoint --- lib/cartodb/cartodb_windshaft.js | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/cartodb/cartodb_windshaft.js b/lib/cartodb/cartodb_windshaft.js index c8a9011c..338a2a3f 100644 --- a/lib/cartodb/cartodb_windshaft.js +++ b/lib/cartodb/cartodb_windshaft.js @@ -165,6 +165,10 @@ var CartodbWindshaft = function(serverOptions) { return { template_id: cdbuser + '@' + tpl_id }; }, function finish(err, response){ + if ( req.profiler ) { + var report = req.profiler.toString(); + res.header('X-Tiler-Profiler', report); + } if (err){ response = { error: ''+err }; var statusCode = 400; @@ -218,6 +222,10 @@ var CartodbWindshaft = function(serverOptions) { return { template_id: cdbuser + '@' + tpl_id }; }, function finish(err, response){ + if ( req.profiler ) { + var report = req.profiler.toString(); + res.header('X-Tiler-Profiler', report); + } if (err){ var statusCode = 400; response = { error: ''+err }; @@ -403,6 +411,7 @@ var CartodbWindshaft = function(serverOptions) { // Instantiate a template function instanciateTemplate(req, res, template_params, callback) { ws.doCORS(res); + if ( req.profiler ) req.profiler.done('cors'); var that = this; var response = {}; var template; @@ -423,6 +432,7 @@ var CartodbWindshaft = function(serverOptions) { templateMaps.getTemplate(cdbuser, tpl_id, this); }, function checkAuthorized(err, data) { + if ( req.profiler ) req.profiler.done('getTemplate'); if ( err ) throw err; if ( ! data ) { err = new Error("Template '" + tpl_id + "' of user '" + cdbuser + "' not found"); @@ -449,24 +459,29 @@ var CartodbWindshaft = function(serverOptions) { throw new Error('template POST data must be of type application/json, it is instead '); }*/ //var template_params = req.body; + if ( req.profiler ) req.profiler.done('authorizedByCert'); return templateMaps.instance(template, template_params); }, function prepareParams(err, instance){ + if ( req.profiler ) req.profiler.done('TemplateMaps_instance'); if ( err ) throw err; layergroup = instance; fakereq = { query: {}, params: {}, headers: _.clone(req.headers) }; ws.setDBParams(cdbuser, fakereq.params, this); }, function setApiKey(err){ + if ( req.profiler ) req.profiler.done('setDBParams'); if ( err ) throw err; cartoData.getUserMapKey(cdbuser, this); }, function createLayergroup(err, val) { + if ( req.profiler ) req.profiler.done('getUserMapKey'); if ( err ) throw err; fakereq.params.api_key = val; ws.createLayergroup(layergroup, fakereq, this); }, function signLayergroup(err, resp) { + if ( req.profiler ) req.profiler.done('createLayergroup'); if ( err ) throw err; response = resp; var signer = cdbuser; @@ -484,10 +499,12 @@ var CartodbWindshaft = function(serverOptions) { signedMaps.signMap(signer, map_id, crt_id, this); }, function prepareResponse(err) { + if ( req.profiler ) req.profiler.done('signMap'); if ( err ) throw err; //console.log("Response from createLayergroup: "); console.dir(response); // Add the signature part to the token! var tplhash = templateMaps.fingerPrint(template).substring(0,8); + if ( req.profiler ) req.profiler.done('fingerPrint'); response.layergroupid = cdbuser + '@' + tplhash + '@' + response.layergroupid; return response; }, @@ -495,7 +512,11 @@ var CartodbWindshaft = function(serverOptions) { ); } - function finish_instanciation(err, response, res) { + function finish_instanciation(err, response, res, req) { + if ( req.profiler ) { + var report = req.profiler.toString(); + res.header('X-Tiler-Profiler', report); + } if (err) { var statusCode = 400; response = { error: ''+err }; @@ -519,7 +540,7 @@ var CartodbWindshaft = function(serverOptions) { } instanciateTemplate(req, res, req.body, this); }, function(err, response) { - finish_instanciation(err, response, res); + finish_instanciation(err, response, res, req); } ); }); @@ -544,7 +565,7 @@ var CartodbWindshaft = function(serverOptions) { } instanciateTemplate(req, res, config, this); }, function(err, response) { - finish_instanciation(err, response, res); + finish_instanciation(err, response, res, req); } ); });