From ee25585f06b23d3a288d0d46cd14b9454599626f Mon Sep 17 00:00:00 2001 From: Eneko Lakasta Date: Fri, 29 Jun 2018 15:01:12 +0200 Subject: [PATCH 1/4] add new error message --- lib/cartodb/api/middlewares/error-middleware.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/cartodb/api/middlewares/error-middleware.js b/lib/cartodb/api/middlewares/error-middleware.js index c02974b4..74a7c701 100644 --- a/lib/cartodb/api/middlewares/error-middleware.js +++ b/lib/cartodb/api/middlewares/error-middleware.js @@ -56,16 +56,18 @@ function populateTimeoutErrors (errors) { error.subtype = 'render'; } - if (isDatasourceTimeoutError(error)) { - error.subtype = 'datasource'; - } - if (isTimeoutError(error)) { error.message = 'You are over platform\'s limits. Please contact us to know more details'; error.type = 'limit'; error.http_status = 429; } + if (isDatasourceTimeoutError(error)) { + error.subtype = 'datasource'; + error.message = 'You are over platform\'s limits: SQL query timeout error.' + + ' Refactor your query before running again or contact CARTO support for more details.'; + } + return error; }); } From 23e5cefdf16b0fb259b73f66c5d76bfa10ca28ee Mon Sep 17 00:00:00 2001 From: Eneko Lakasta Date: Mon, 2 Jul 2018 11:29:47 +0200 Subject: [PATCH 2/4] Update NEWS --- NEWS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS.md b/NEWS.md index 311a4842..468bd876 100644 --- a/NEWS.md +++ b/NEWS.md @@ -47,6 +47,9 @@ Bug Fixes: - Fix `meta.stats.estimatedFeatureCount` for aggregations and queries with tokens - Static maps filters correctly if `layer` option is passed in the url. +Announcements: + * Improve error message when the DB query is over the user's limits + ## 6.1.0 Released 2018-04-16 From c874a734fd889aebda3c124bd4aa2a9dcce07b49 Mon Sep 17 00:00:00 2001 From: Eneko Lakasta Date: Mon, 2 Jul 2018 13:02:36 +0200 Subject: [PATCH 3/4] fix db limit error message set order --- lib/cartodb/api/middlewares/error-middleware.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/cartodb/api/middlewares/error-middleware.js b/lib/cartodb/api/middlewares/error-middleware.js index 74a7c701..1c022dde 100644 --- a/lib/cartodb/api/middlewares/error-middleware.js +++ b/lib/cartodb/api/middlewares/error-middleware.js @@ -56,13 +56,15 @@ function populateTimeoutErrors (errors) { error.subtype = 'render'; } + const IS_DATASOURCE_TIMEOUT_ERROR = isDatasourceTimeoutError(error); + if (isTimeoutError(error)) { error.message = 'You are over platform\'s limits. Please contact us to know more details'; error.type = 'limit'; error.http_status = 429; } - if (isDatasourceTimeoutError(error)) { + if (IS_DATASOURCE_TIMEOUT_ERROR) { error.subtype = 'datasource'; error.message = 'You are over platform\'s limits: SQL query timeout error.' + ' Refactor your query before running again or contact CARTO support for more details.'; From a8d791e2d3e01bd9eafdcb882c14f1a8591ccb9c Mon Sep 17 00:00:00 2001 From: Eneko Lakasta Date: Mon, 2 Jul 2018 13:03:01 +0200 Subject: [PATCH 4/4] update tests with new error message --- .../acceptance/user-database-timeout-limit.js | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/test/acceptance/user-database-timeout-limit.js b/test/acceptance/user-database-timeout-limit.js index d65f6583..1111adce 100644 --- a/test/acceptance/user-database-timeout-limit.js +++ b/test/acceptance/user-database-timeout-limit.js @@ -68,16 +68,19 @@ const createMapConfig = ({ } }); +const db_limit_error_message = 'You are over platform\'s limits: SQL query timeout error.' + + ' Refactor your query before running again or contact CARTO support for more details.'; + const DATASOURCE_TIMEOUT_ERROR = { - errors: ['You are over platform\'s limits. Please contact us to know more details'], + errors: [db_limit_error_message], errors_with_context: [{ type: 'limit', subtype: 'datasource', - message: 'You are over platform\'s limits. Please contact us to know more details' + message: db_limit_error_message }] }; -describe('user database timeout limit', function () { +describe.only('user database timeout limit', function () { describe('dataview', function () { beforeEach(function (done) { const mapconfig = createMapConfig(); @@ -141,11 +144,11 @@ describe('user database timeout limit', function () { this.testClient.getLayergroup({ response: expectedResponse }, (err, timeoutError) => { assert.deepEqual(timeoutError, { - errors: [ 'You are over platform\'s limits. Please contact us to know more details' ], + errors: [db_limit_error_message ], errors_with_context: [{ type: 'limit', subtype: 'datasource', - message: 'You are over platform\'s limits. Please contact us to know more details', + message: db_limit_error_message, layer: { id: 'layer0', index: 0, type: 'mapnik' } }] }); @@ -363,11 +366,11 @@ describe('user database timeout limit', function () { this.testClient.getLayergroup({ response: expectedResponse }, (err, timeoutError) => { assert.deepEqual(timeoutError, { - errors: [ 'You are over platform\'s limits. Please contact us to know more details' ], + errors: [ db_limit_error_message ], errors_with_context: [{ type: 'limit', subtype: 'datasource', - message: 'You are over platform\'s limits. Please contact us to know more details', + message: db_limit_error_message, layer: { id: 'layer0', index: 0, type: 'mapnik' } }] }); @@ -541,11 +544,11 @@ describe('user database timeout limit', function () { this.testClient.getLayergroup({ response: expectedResponse }, (err, timeoutError) => { assert.deepEqual(timeoutError, { - errors: [ 'You are over platform\'s limits. Please contact us to know more details' ], + errors: [ db_limit_error_message ], errors_with_context: [{ type: 'limit', subtype: 'datasource', - message: 'You are over platform\'s limits. Please contact us to know more details', + message: db_limit_error_message, layer: { id: 'layer0', index: 0, type: 'mapnik' } }] }); @@ -645,11 +648,11 @@ describe('user database timeout limit', function () { this.testClient.getLayergroup({ response: expectedResponse }, (err, timeoutError) => { assert.deepEqual(timeoutError, { - errors: [ 'You are over platform\'s limits. Please contact us to know more details' ], + errors: [db_limit_error_message], errors_with_context: [{ type: 'limit', subtype: 'datasource', - message: 'You are over platform\'s limits. Please contact us to know more details', + message: db_limit_error_message, layer: { id: 'torque-layer0', index: 0, type: 'torque' } }] }); @@ -776,11 +779,11 @@ describe('user database timeout limit', function () { this.testClient.getLayergroup({ response: expectedResponse }, (err, timeoutError) => { assert.deepEqual(timeoutError, { - errors: [ 'You are over platform\'s limits. Please contact us to know more details' ], + errors: [db_limit_error_message], errors_with_context: [{ type: 'limit', subtype: 'datasource', - message: 'You are over platform\'s limits. Please contact us to know more details', + message: db_limit_error_message, layer: { id: 'layer0', index: 0,