diff --git a/NEWS.md b/NEWS.md
index ccb90b60..ca420d85 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,8 +1,56 @@
# Changelog
-## 3.6.0
+## 3.6.7
Released 2017-mm-dd
+
+## 3.6.6
+Released 2017-05-11
+
+Announcements:
+ - Upgrades camshaft to [0.54.4](https://github.com/CartoDB/camshaft/releases/tag/0.54.4).
+
+
+## 3.6.5
+Released 2017-05-09
+
+Announcements:
+ - Upgrades camshaft to [0.54.3](https://github.com/CartoDB/camshaft/releases/tag/0.54.3).
+
+
+## 3.6.4
+Released 2017-05-05
+
+Announcements:
+ - Upgrade cartodb-psql to [0.8.0](https://github.com/CartoDB/node-cartodb-psql/releases/tag/0.8.0).
+ - Upgrades camshaft to [0.54.2](https://github.com/CartoDB/camshaft/releases/tag/0.54.2).
+ - Upgrades windshaft to [3.1.2](https://github.com/CartoDB/windshaft/releases/tag/3.1.2).
+
+
+## 3.6.3
+Released 2017-04-25
+
+Announcements:
+ - Upgrades windshaft to [3.1.1](https://github.com/CartoDB/windshaft/releases/tag/3.1.1).
+
+
+## 3.6.2
+Released 2017-04-24
+
+Announcements:
+ - Upgrades grainstore to [1.6.3](https://github.com/CartoDB/grainstore/releases/tag/1.6.3).
+
+
+## 3.6.1
+Released 2017-04-24
+
+Announcements:
+ - Upgrades camshaft to [0.54.1](https://github.com/CartoDB/camshaft/releases/tag/0.54.1).
+
+
+## 3.6.0
+Released 2017-04-20
+
Announcements:
- Upgrades camshaft to [0.54.0](https://github.com/CartoDB/camshaft/releases/tag/0.54.0).
diff --git a/config/environments/development.js.example b/config/environments/development.js.example
index 6800d4c6..9bc4157b 100644
--- a/config/environments/development.js.example
+++ b/config/environments/development.js.example
@@ -6,6 +6,9 @@ var config = {
// Its default size is 4, but it can be changed at startup time (the absolute maximum is 128).
// See http://docs.libuv.org/en/latest/threadpool.html
,uv_threadpool_size: undefined
+ // Time in milliseconds to force GC cycle.
+ // Disable by using <=0 value.
+ ,gc_interval: 10000
// Regular expression pattern to extract username
// from hostname. Must have a single grabbing block.
,user_from_host: '^(.*)\\.localhost'
diff --git a/config/environments/production.js.example b/config/environments/production.js.example
index 41e2353d..b305deef 100644
--- a/config/environments/production.js.example
+++ b/config/environments/production.js.example
@@ -6,6 +6,9 @@ var config = {
// Its default size is 4, but it can be changed at startup time (the absolute maximum is 128).
// See http://docs.libuv.org/en/latest/threadpool.html
,uv_threadpool_size: undefined
+ // Time in milliseconds to force GC cycle.
+ // Disable by using <=0 value.
+ ,gc_interval: 10000
// Regular expression pattern to extract username
// from hostname. Must have a single grabbing block.
,user_from_host: '^(.*)\\.cartodb\\.com$'
diff --git a/config/environments/staging.js.example b/config/environments/staging.js.example
index 170e5e5f..fa3c7cb6 100644
--- a/config/environments/staging.js.example
+++ b/config/environments/staging.js.example
@@ -6,6 +6,9 @@ var config = {
// Its default size is 4, but it can be changed at startup time (the absolute maximum is 128).
// See http://docs.libuv.org/en/latest/threadpool.html
,uv_threadpool_size: undefined
+ // Time in milliseconds to force GC cycle.
+ // Disable by using <=0 value.
+ ,gc_interval: 10000
// Regular expression pattern to extract username
// from hostname. Must have a single grabbing block.
,user_from_host: '^(.*)\\.cartodb\\.com$'
diff --git a/config/environments/test.js.example b/config/environments/test.js.example
index 3c940ac6..465b1774 100644
--- a/config/environments/test.js.example
+++ b/config/environments/test.js.example
@@ -6,6 +6,9 @@ var config = {
// Its default size is 4, but it can be changed at startup time (the absolute maximum is 128).
// See http://docs.libuv.org/en/latest/threadpool.html
,uv_threadpool_size: undefined
+ // Time in milliseconds to force GC cycle.
+ // Disable by using <=0 value.
+ ,gc_interval: 10000
// Regular expression pattern to extract username
// from hostname. Must have a single grabbing block.
,user_from_host: '(.*)'
diff --git a/docs/static_maps_api.md b/docs/static_maps_api.md
index 736d90e0..91db2a6d 100644
--- a/docs/static_maps_api.md
+++ b/docs/static_maps_api.md
@@ -150,6 +150,10 @@ It is important to note that generated images are cached from the live data refe
* Image resolution is set to 72 DPI
* JPEG quality is 85%
* Timeout limits for generating static maps are the same across CARTO Builder and CARTO Engine. It is important to ensure timely processing of queries.
+* If you are publishing your map as a static image with the API, you must manually add [attributions](https://carto.com/attribution) for your static map image. For example, add the following attribution code:
+
+{% highlight javascript %}attribution: '© OpenStreetMap contributors, © CARTO
+{% endhighlight %}
## Examples
diff --git a/package.json b/package.json
index af824cc4..c2a0721f 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "windshaft-cartodb",
- "version": "3.6.0",
+ "version": "3.6.7",
"description": "A map tile server for CartoDB",
"keywords": [
"cartodb"
@@ -20,8 +20,8 @@
],
"dependencies": {
"body-parser": "~1.14.0",
- "camshaft": "0.54.0",
- "cartodb-psql": "~0.7.1",
+ "camshaft": "0.54.4",
+ "cartodb-psql": "0.8.0",
"cartodb-query-tables": "0.2.0",
"cartodb-redis": "0.13.2",
"debug": "~2.2.0",
diff --git a/test/acceptance/analysis/error-cases.js b/test/acceptance/analysis/error-cases.js
index 3bde8442..b79e1046 100644
--- a/test/acceptance/analysis/error-cases.js
+++ b/test/acceptance/analysis/error-cases.js
@@ -373,5 +373,70 @@ describe('analysis-layers error cases', function() {
});
});
+ it('should return "function does not exist" indicating the node_id and context', function(done) {
+ var mapConfig = createMapConfig([{
+ "type": "cartodb",
+ "options": {
+ "source": {
+ "id": "HEAD"
+ },
+ "cartocss": '#polygons { polygon-fill: red; }',
+ "cartocss_version": "2.3.0"
+ }
+ }], {}, [{
+ "id": "HEAD",
+ "type": "buffer",
+ "params": {
+ "source": {
+ "id": "HEAD2",
+ "type": "buffer",
+ "params": {
+ "source": {
+ "id": "HEAD3",
+ "type": 'deprecated-sql-function',
+ "params": {
+ "id": "HEAD4",
+ "function_name": 'DEP_EXT_does_not_exist_fn',
+ "primary_source": {
+ "type": 'source',
+ "params": {
+ "query": "select * from populated_places_simple_reduced"
+ }
+ },
+ "function_args": ['wadus']
+ }
+ },
+ "radius": 10
+ }
+ },
+ "radius": 10
+ }
+ }]);
+
+ var testClient = new TestClient(mapConfig, 1234);
+
+ testClient.getLayergroup(ERROR_RESPONSE, function(err, layergroupResult) {
+ assert.ok(!err, err);
+
+ assert.equal(layergroupResult.errors.length, 1);
+ assert.equal(
+ layergroupResult.errors[0],
+ 'function dep_ext_does_not_exist_fn(unknown, unknown, unknown, text[], unknown) does not exist'
+ );
+
+ assert.equal(layergroupResult.errors_with_context[0].type, 'analysis');
+ assert.equal(
+ layergroupResult.errors_with_context[0].message,
+ 'function dep_ext_does_not_exist_fn(unknown, unknown, unknown, text[], unknown) does not exist'
+ );
+ assert.equal(layergroupResult.errors_with_context[0].analysis.id, 'HEAD');
+ assert.equal(layergroupResult.errors_with_context[0].analysis.type, 'buffer');
+ assert.equal(layergroupResult.errors_with_context[0].analysis.node_id, 'HEAD3');
+
+ testClient.drain(done);
+ });
+ });
+
+
});
diff --git a/yarn.lock b/yarn.lock
index 79f89643..8a9fd937 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -194,13 +194,13 @@ camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
-camshaft@0.54.0:
- version "0.54.0"
- resolved "https://registry.yarnpkg.com/camshaft/-/camshaft-0.54.0.tgz#9cb23b827dee0f54d0a39b8af3213692f11adf62"
+camshaft@0.54.4:
+ version "0.54.4"
+ resolved "https://registry.yarnpkg.com/camshaft/-/camshaft-0.54.4.tgz#3e1e96cda36661ebc01b64dadcc6387b02d69739"
dependencies:
async "^1.5.2"
bunyan "1.8.1"
- cartodb-psql "0.7.1"
+ cartodb-psql "0.8.0"
debug "^2.2.0"
dot "^1.0.3"
request "^2.69.0"
@@ -245,9 +245,9 @@ cartocolor@4.0.0:
dependencies:
colorbrewer "1.0.0"
-cartodb-psql@0.7.1, cartodb-psql@~0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/cartodb-psql/-/cartodb-psql-0.7.1.tgz#578ce04db9262f1296845dec643461105a594e22"
+cartodb-psql@0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/cartodb-psql/-/cartodb-psql-0.8.0.tgz#d3811f706dae2c3bc82365c5d25af13c4235ba37"
dependencies:
debug "~2.2.0"
pg cartodb/node-postgres#6.1.2-cdb1
@@ -1403,10 +1403,14 @@ oauth-sign@~0.8.1:
version "0.8.2"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
-object-assign@4.1.0, object-assign@^4.1.0:
+object-assign@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+
object-keys@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
@@ -2282,7 +2286,7 @@ windshaft@cartodb/windshaft#548-vector-buffer-size:
abaculus cartodb/abaculus#2.0.3-cdb1
canvas cartodb/node-canvas#1.6.2-cdb2
carto cartodb/carto#0.15.1-cdb3
- cartodb-psql "0.7.1"
+ cartodb-psql "0.8.0"
debug "~2.2.0"
dot "~1.0.2"
grainstore "~1.6.0"