From b9d7cb7cb69c3bc6d3a95641060bd1ca8410eb39 Mon Sep 17 00:00:00 2001 From: cgonzalez Date: Fri, 19 Mar 2021 10:33:47 +0000 Subject: [PATCH] Add custom debug logs --- lib/api/sql/query-controller.js | 4 +++- lib/models/formats/ogr.js | 12 ++++++++++++ lib/models/formats/ogr/csv.js | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/api/sql/query-controller.js b/lib/api/sql/query-controller.js index f8be5e15..be0863fa 100644 --- a/lib/api/sql/query-controller.js +++ b/lib/api/sql/query-controller.js @@ -73,7 +73,7 @@ module.exports = class QueryController { function handleQuery ({ stats } = {}) { return function handleQueryMiddleware (req, res, next) { - const { user: username, userDbParams: dbopts, userLimits } = res.locals; + const { user: username, userDbParams: dbopts, userLimits, logger } = res.locals; const { orderBy, sortOrder, limit, offset } = res.locals.params; const { sql, skipfields, decimalPrecision, filename, callback } = res.locals.params; @@ -107,6 +107,8 @@ function handleQuery ({ stats } = {}) { res.header('X-Served-By-DB-Host', dbopts.host); } + logger.info({ custom: true }, 'Starting formatter handler'); + formatter.sendResponse(opts, (err) => { formatter = null; diff --git a/lib/models/formats/ogr.js b/lib/models/formats/ogr.js index 4886fb9a..6614490c 100644 --- a/lib/models/formats/ogr.js +++ b/lib/models/formats/ogr.js @@ -1,5 +1,7 @@ 'use strict'; +const serverOptions = require('./../../server-options'); +const { logger } = serverOptions(); var crypto = require('crypto'); var step = require('step'); var fs = require('fs'); @@ -93,9 +95,13 @@ OgrFormat.prototype.toOGR = function (options, outFormat, outFilename, callback) step( function fetchColumns () { + logger.info({custom: true}, 'Getting dataset columns'); + var colsql = 'SELECT * FROM (' + sql + ') as _cartodbsqlapi LIMIT 0'; pg = new PSQL(dbopts); pg.query(colsql, this); + + logger.info({ custom: true, colsql: colsql }, 'Dataset columns query done'); }, function findSRS (err, result) { if (err) { @@ -177,6 +183,8 @@ OgrFormat.prototype.toOGR = function (options, outFormat, outFilename, callback) ogrargs.push('-nln', outLayername); + logger.info({ custom: true }, 'Executing ogr2ogr command'); + // TODO: research if `exec` could fit better than `spawn` var child = spawn(ogr2ogr, ogrargs); @@ -226,6 +234,8 @@ OgrFormat.prototype.toOGR = function (options, outFormat, outFilename, callback) }; OgrFormat.prototype.toOGR_SingleFile = function (options, fmt, callback) { + logger.info({ custom: true }, 'Generating filename'); + var dbname = options.dbopts.dbname; var userId = options.dbopts.user; var gcol = options.gcol; @@ -246,6 +256,8 @@ OgrFormat.prototype.toOGR_SingleFile = function (options, fmt, callback) { var outdirpath = tmpdir + '/sqlapi-' + process.pid + '-' + reqKey; var dumpfile = outdirpath + ':cartodb-query.' + ext; + logger.info({ custom: true, dumpfile: dumpfile }, 'File name generated'); + // TODO: following tests: // - fetch query with no "the_geom" column this.toOGR(options, fmt, dumpfile, callback); diff --git a/lib/models/formats/ogr/csv.js b/lib/models/formats/ogr/csv.js index 425f3b5c..98d8fcbd 100644 --- a/lib/models/formats/ogr/csv.js +++ b/lib/models/formats/ogr/csv.js @@ -1,6 +1,8 @@ 'use strict'; var Ogr = require('./../ogr'); +const serverOptions = require('./../../../server-options'); +const { logger } = serverOptions(); function CsvFormat () {} @@ -10,6 +12,8 @@ CsvFormat.prototype._contentType = 'text/csv; charset=utf-8; header=present'; CsvFormat.prototype._fileExtension = 'csv'; CsvFormat.prototype.generate = function (options, callback) { + logger.info({ custom: true }, 'Generating CSV format'); + this.toOGR_SingleFile(options, 'CSV', callback); };