From 308246f324ace898236bb715643f47379d619b04 Mon Sep 17 00:00:00 2001 From: Luis Bosque Date: Tue, 9 Jul 2013 10:26:43 +0200 Subject: [PATCH 01/13] Target v1.3.3 --- NEWS.md | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 3fdf6a19..de8d214c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,6 @@ +1.3.3 +------ + 1.3.2 ------ * Set default layergroup TTL to 2 hours diff --git a/package.json b/package.json index ff1670fb..83bf1e2a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "1.3.2", + "version": "1.3.3", "description": "A map tile server for CartoDB", "url": "https://github.com/Vizzuality/Windshaft-cartodb", "licenses": [{ From afd4c3b46044719d0e830e0a6e212133d5fdddbd Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 15 Jul 2013 12:02:54 +0200 Subject: [PATCH 02/13] Set Last-Modified header to allow for 304 responses --- NEWS.md | 1 + lib/cartodb/server_options.js | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index de8d214c..087b9173 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,6 @@ 1.3.3 ------ +* Set Last-Modified header to allow for 304 responses 1.3.2 ------ diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index 177d6aab..86c607f3 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -215,10 +215,17 @@ module.exports = function(){ res.header('Cache-Control', 'public,max-age=31536000'); // 1 year } else { var ttl = global.environment.varnish.ttl || 86400; - res.header('Last-Modified', new Date().toUTCString()); res.header('Cache-Control', 'no-cache,max-age='+ttl+',must-revalidate, public'); } + // Set Last-Modified header + // + // Currently sets it to NOW + // + // TODO: find out a real value, querying for most recent change in + // any of the source tables + res.header('Last-Modified', new Date().toUTCString()); + me.generateCacheChannel(req, function(err, channel){ if ( ! err ) { res.header('X-Cache-Channel', channel); From 4b5899ff1aec8c6682585bd2789179da3eed40d2 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 15 Jul 2013 12:09:13 +0200 Subject: [PATCH 03/13] Use a constant Last-Modified time with cache_policy=persist After all if the client is asking for persistance it doesn't make sense to set a different Last-Modified for different incoming requests (even if we don't expect any) .... --- lib/cartodb/server_options.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index 86c607f3..33fe8e87 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -213,18 +213,20 @@ module.exports = function(){ if ( req.params.token ) cache_policy = 'persist'; if ( cache_policy == 'persist' ) { res.header('Cache-Control', 'public,max-age=31536000'); // 1 year + // Set Last-Modified header to a constant time in the past + res.header('Last-Modified', new Date(0).toUTCString()); } else { var ttl = global.environment.varnish.ttl || 86400; res.header('Cache-Control', 'no-cache,max-age='+ttl+',must-revalidate, public'); + // Set Last-Modified header + // + // Currently sets it to NOW + // + // TODO: find out a real value, querying for most recent change in + // any of the source tables + res.header('Last-Modified', new Date().toUTCString()); } - // Set Last-Modified header - // - // Currently sets it to NOW - // - // TODO: find out a real value, querying for most recent change in - // any of the source tables - res.header('Last-Modified', new Date().toUTCString()); me.generateCacheChannel(req, function(err, channel){ if ( ! err ) { From 76c056c7a17c343b40e1663cd90d4aa0accb3f6e Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 15 Jul 2013 13:14:06 +0200 Subject: [PATCH 04/13] Revert "Use a constant Last-Modified time with cache_policy=persist" This reverts commit 4b5899ff1aec8c6682585bd2789179da3eed40d2. The reason is that setting Last-Modified to a remote date in the past triggers early expiration of cache (as max-age will be reached sooner) --- lib/cartodb/server_options.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index 33fe8e87..86c607f3 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -213,20 +213,18 @@ module.exports = function(){ if ( req.params.token ) cache_policy = 'persist'; if ( cache_policy == 'persist' ) { res.header('Cache-Control', 'public,max-age=31536000'); // 1 year - // Set Last-Modified header to a constant time in the past - res.header('Last-Modified', new Date(0).toUTCString()); } else { var ttl = global.environment.varnish.ttl || 86400; res.header('Cache-Control', 'no-cache,max-age='+ttl+',must-revalidate, public'); - // Set Last-Modified header - // - // Currently sets it to NOW - // - // TODO: find out a real value, querying for most recent change in - // any of the source tables - res.header('Last-Modified', new Date().toUTCString()); } + // Set Last-Modified header + // + // Currently sets it to NOW + // + // TODO: find out a real value, querying for most recent change in + // any of the source tables + res.header('Last-Modified', new Date().toUTCString()); me.generateCacheChannel(req, function(err, channel){ if ( ! err ) { From 381b9a9edfcaf150dbeda08329bea73d9474a33f Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 15 Jul 2013 13:48:06 +0200 Subject: [PATCH 05/13] Take cache_buster value, if present, as a Last-Modified timestamp This makes the Last-Modified header consistent across requests using the same cache_buster (embedded in the token for multilayer API). --- lib/cartodb/server_options.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index 86c607f3..fb7b8422 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -159,13 +159,10 @@ module.exports = function(){ callback(null, me.channelCache[cacheKey]); return; } - - if ( req.params.token ) { - if ( ! me.channelCache.hasOwnProperty(cacheKey) ) { - callback(new Error('missing channel cache for token ' + req.params.token)); - } else { - callback(null, me.channelCache[cacheKey]); - } + else if ( req.params.token ) { + // cached cache channel for token-based access should be constructed + // at cache creation time + callback(new Error('missing channel cache for token ' + req.params.token)); return; } @@ -219,12 +216,15 @@ module.exports = function(){ } // Set Last-Modified header - // - // Currently sets it to NOW - // - // TODO: find out a real value, querying for most recent change in - // any of the source tables - res.header('Last-Modified', new Date().toUTCString()); + var lastUpdated; + if ( req.params.cache_buster ) { + // Assuming cache_buster is a timestamp + // FIXME: store lastModified in the cache channel instead + lastUpdated = new Date(parseInt(req.params.cache_buster)); + } else { + lastUpdated = new Date(); + } + res.header('Last-Modified', lastUpdated.toUTCString()); me.generateCacheChannel(req, function(err, channel){ if ( ! err ) { From 23da8538a65dde39b4d22e1d55b4153f98f8dafa Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 15 Jul 2013 13:55:13 +0200 Subject: [PATCH 06/13] Add --with-sqlapi-port switch --- configure | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/configure b/configure index 3f07bba0..df6f0191 100755 --- a/configure +++ b/configure @@ -18,6 +18,7 @@ # PGPORT=5432 +SQLAPI_PORT=8080 MAPNIK_VERSION= usage() { @@ -26,6 +27,7 @@ usage() { echo "Configuration:" echo " --help display this help and exit" echo " --with-pgport=NUM access PostgreSQL server on TCP port NUM [$PGPORT]" + echo " --with-sqlapi-port=NUM access SQL-API server on TCP port NUM [$SQLAPI_PORT]" echo " --with-mapnik-version=STRING set mapnik version string [$MAPNIK_VERSION]" } @@ -38,6 +40,9 @@ while test -n "$1"; do --with-pgport=*) PGPORT=`echo "$1" | cut -d= -f2` ;; + --with-sqlapi-port=*) + SQLAPI_PORT=`echo "$1" | cut -d= -f2` + ;; --with-mapnik-version=*) MAPNIK_VERSION=`echo "$1" | cut -d= -f2` ;; @@ -60,6 +65,7 @@ for f in config/environments/*.example; do # See http://austinmatzko.com/2008/04/26/sed-multi-line-search-and-replace/ sed -n "1h;1!H;\${;g;s/\(,postgres: {[^}]*port: *'\?\)[^',]*\('\?,\)/\1$PGPORT\2/;p;}" < "$f" \ | sed "s/mapnik_version:.*/mapnik_version: '$MAPNIK_VERSION'/" \ + | sed -n "1h;1!H;\${;g;s/\(,sqlapi: {[^}]*port: *'\?\)[^',]*\('\?,\)/\1$SQLAPI_PORT\2/;p;}" \ > "$o" done From 25c46962cba72926fb17011635a57bdfcdc5b558 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 15 Jul 2013 13:59:55 +0200 Subject: [PATCH 07/13] Add --environment switch to restrict output to given env --- configure | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/configure b/configure index df6f0191..282fd63d 100755 --- a/configure +++ b/configure @@ -20,6 +20,7 @@ PGPORT=5432 SQLAPI_PORT=8080 MAPNIK_VERSION= +ENVIRONMENT=development usage() { echo "Usage: $0 [OPTION]" @@ -29,6 +30,7 @@ usage() { echo " --with-pgport=NUM access PostgreSQL server on TCP port NUM [$PGPORT]" echo " --with-sqlapi-port=NUM access SQL-API server on TCP port NUM [$SQLAPI_PORT]" echo " --with-mapnik-version=STRING set mapnik version string [$MAPNIK_VERSION]" + echo " --environment=STRING set output environment name [$ENVIRONMENT]" } while test -n "$1"; do @@ -46,6 +48,9 @@ while test -n "$1"; do --with-mapnik-version=*) MAPNIK_VERSION=`echo "$1" | cut -d= -f2` ;; + --environment=*) + ENVIRONMENT=`echo "$1" | cut -d= -f2` + ;; *) echo "Unknown option '$1'" >&2 usage >&2 @@ -55,10 +60,12 @@ while test -n "$1"; do done echo "PGPORT: $PGPORT" +echo "SQLAPI_PORT: $SQLAPI_PORT" echo "MAPNIK_VERSION: $MAPNIK_VERSION" +echo "ENVIRONMENT: $ENVIRONMENT" # TODO: allow specifying configuration settings ! -for f in config/environments/*.example; do +for f in config/environments/${ENVIRONMENT}.js.example; do o=`dirname "$f"`/`basename "$f" .example` echo "Writing $o" From ec97381820854019fa0f80e0470b0affe838f8a5 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Tue, 16 Jul 2013 15:59:34 +0200 Subject: [PATCH 08/13] Add more timing in the profile, add useProfiler config variable Default to useProfiler:true in staging and development --- NEWS.md | 1 + config/environments/development.js.example | 4 ++ config/environments/production.js.example | 4 ++ config/environments/staging.js.example | 4 ++ config/environments/test.js.example | 4 ++ lib/cartodb/redis_pool.js | 2 +- lib/cartodb/server_options.js | 10 ++++- npm-shrinkwrap.json | 48 ++-------------------- package.json | 2 +- 9 files changed, 32 insertions(+), 47 deletions(-) diff --git a/NEWS.md b/NEWS.md index 087b9173..ff12e8c9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,7 @@ 1.3.3 ------ * Set Last-Modified header to allow for 304 responses +* Add profiling support (needs useProfiler in env config file) 1.3.2 ------ diff --git a/config/environments/development.js.example b/config/environments/development.js.example index 9c8c10f8..82979b06 100644 --- a/config/environments/development.js.example +++ b/config/environments/development.js.example @@ -63,6 +63,10 @@ var config = { port: 6082, ttl: 86400 } + // If useProfiler is true every response will be served with an + // X-Tiler-Profile header containing elapsed timing for various + // steps taken for producing the response. + ,useProfiler:true }; module.exports = config; diff --git a/config/environments/production.js.example b/config/environments/production.js.example index 5ee29407..b547f49a 100644 --- a/config/environments/production.js.example +++ b/config/environments/production.js.example @@ -57,6 +57,10 @@ var config = { port: 6082, ttl: 86400 } + // If useProfiler is true every response will be served with an + // X-Tiler-Profile header containing elapsed timing for various + // steps taken for producing the response. + ,useProfiler:false }; module.exports = config; diff --git a/config/environments/staging.js.example b/config/environments/staging.js.example index 7fc660c5..a90153f6 100644 --- a/config/environments/staging.js.example +++ b/config/environments/staging.js.example @@ -57,6 +57,10 @@ var config = { port: 6082, ttl: 86400 } + // If useProfiler is true every response will be served with an + // X-Tiler-Profile header containing elapsed timing for various + // steps taken for producing the response. + ,useProfiler:true }; module.exports = config; diff --git a/config/environments/test.js.example b/config/environments/test.js.example index ff636581..9da8aeb7 100644 --- a/config/environments/test.js.example +++ b/config/environments/test.js.example @@ -59,6 +59,10 @@ var config = { port: null, ttl: 86400 } + // If useProfiler is true every response will be served with an + // X-Tiler-Profile header containing elapsed timing for various + // steps taken for producing the response. + ,useProfiler:false }; module.exports = config; diff --git a/lib/cartodb/redis_pool.js b/lib/cartodb/redis_pool.js index d2c40cc2..2ef86461 100644 --- a/lib/cartodb/redis_pool.js +++ b/lib/cartodb/redis_pool.js @@ -77,4 +77,4 @@ var RedisPool = function(opts){ return me; }; -module.exports = RedisPool; \ No newline at end of file +module.exports = RedisPool; diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index fb7b8422..9957bf8a 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -37,7 +37,8 @@ module.exports = function(){ varnish_host: global.environment.varnish.host, varnish_port: global.environment.varnish.port, cache_enabled: global.environment.cache_enabled, - log_format: global.environment.log_format + log_format: global.environment.log_format, + useProfiler: global.environment.useProfiler }; // Be nice and warn if configured mapnik version @@ -313,6 +314,7 @@ module.exports = function(){ LZMA.decompress( lzma, function(result) { + if (req.profiler) req.profiler.done('LZMA decompress'); try { delete req.query.lzma _.extend(req.query, JSON.parse(result)) @@ -357,11 +359,14 @@ module.exports = function(){ var that = this; + if (req.profiler) req.profiler.done('req2params.setup'); + Step( function getPrivacy(){ cartoData.authorize(req, this); }, function gatekeep(err, data){ + if (req.profiler) req.profiler.done('cartoData.authorize'); if(err) throw err; if(data === "0") throw new Error("Sorry, you are unauthorized (permission denied)"); return data; @@ -372,18 +377,21 @@ module.exports = function(){ cartoData.getDatabase(req, this); }, function getGeometryType(err, data){ + if (req.profiler) req.profiler.done('cartoData.getDatabase'); if (err) throw err; _.extend(req.params, {dbname:data}); cartoData.getGeometryType(req, this); }, function finishSetup(err, data){ + if (req.profiler) req.profiler.done('cartoData.getGeometryType'); if ( err ) { callback(err, req); return; } if (!_.isNull(data)) _.extend(req.params, {geom_type: data}); that.addCacheChannel(req, function(err) { + if (req.profiler) req.profiler.done('addCacheChannel'); callback(err, req); }); } diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 68e156f4..6c62c2b6 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "windshaft-cartodb", - "version": "1.3.1", + "version": "1.3.3", "dependencies": { "node-varnish": { "version": "0.1.1" @@ -9,10 +9,10 @@ "version": "1.3.3" }, "windshaft": { - "version": "0.12.9", + "version": "0.13.0", "dependencies": { "grainstore": { - "version": "0.13.5", + "version": "0.13.6", "dependencies": { "carto": { "version": "0.9.3-cdb3", @@ -72,47 +72,7 @@ "version": "0.3.4" }, "sqlite3": { - "version": "2.1.10", - "dependencies": { - "tar.gz": { - "version": "0.1.1", - "dependencies": { - "fstream": { - "version": "0.1.22", - "dependencies": { - "rimraf": { - "version": "2.2.0" - }, - "graceful-fs": { - "version": "1.2.2" - }, - "inherits": { - "version": "1.0.0" - } - } - }, - "tar": { - "version": "0.1.17", - "dependencies": { - "inherits": { - "version": "1.0.0" - }, - "block-stream": { - "version": "0.0.6" - } - } - }, - "commander": { - "version": "1.1.1", - "dependencies": { - "keypress": { - "version": "0.1.0" - } - } - } - } - } - } + "version": "2.1.13" }, "mime": { "version": "1.2.9" diff --git a/package.json b/package.json index 83bf1e2a..718b7228 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "dependencies": { "node-varnish": "0.1.1", "underscore" : "~1.3.3", - "windshaft" : "~0.12.9", + "windshaft" : "~0.13.0", "step": "0.0.x", "generic-pool": "~2.0.3", "redis": "~0.8.3", From 7cb69d1db9dfcc55413e4082d72d2439f9186d8b Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Thu, 18 Jul 2013 09:53:59 +0200 Subject: [PATCH 09/13] Add example of including profile in response log line --- config/environments/development.js.example | 2 +- config/environments/production.js.example | 2 +- config/environments/staging.js.example | 2 +- config/environments/test.js.example | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/environments/development.js.example b/config/environments/development.js.example index 82979b06..7a3aaad8 100644 --- a/config/environments/development.js.example +++ b/config/environments/development.js.example @@ -9,7 +9,7 @@ var config = { ,socket_timeout: 600000 ,enable_cors: true ,cache_enabled: false - ,log_format: '[:date] :req[X-Real-IP] :method :req[Host]:url :status :response-time ms -> :res[Content-Type]' + ,log_format: '[:date] :req[X-Real-IP] :method :req[Host]:url :status :response-time ms -> :res[Content-Type] (:res[X-Tiler-Profiler])' ,postgres_auth_user: 'development_cartodb_user_<%= user_id %>' ,postgres: { // Parameters to pass to datasource plugin of mapnik diff --git a/config/environments/production.js.example b/config/environments/production.js.example index b547f49a..c80d46f2 100644 --- a/config/environments/production.js.example +++ b/config/environments/production.js.example @@ -9,7 +9,7 @@ var config = { ,socket_timeout: 600000 ,enable_cors: true ,cache_enabled: true - ,log_format: '[:date] :req[X-Real-IP] :method :req[Host]:url :status :response-time ms -> :res[Content-Type]' + ,log_format: '[:date] :req[X-Real-IP] :method :req[Host]:url :status :response-time ms -> :res[Content-Type] (:res[X-Tiler-Profiler])' ,postgres_auth_user: 'cartodb_user_<%= user_id %>' ,postgres: { // Parameters to pass to datasource plugin of mapnik diff --git a/config/environments/staging.js.example b/config/environments/staging.js.example index a90153f6..bdf31fc5 100644 --- a/config/environments/staging.js.example +++ b/config/environments/staging.js.example @@ -9,7 +9,7 @@ var config = { ,socket_timeout: 600000 ,enable_cors: true ,cache_enabled: true - ,log_format: '[:date] :req[X-Real-IP] :method :req[Host]:url :status :response-time ms -> :res[Content-Type]' + ,log_format: '[:date] :req[X-Real-IP] :method :req[Host]:url :status :response-time ms (:res[X-Tiler-Profiler]) -> :res[Content-Type]' ,postgres_auth_user: 'cartodb_staging_user_<%= user_id %>' ,postgres: { // Parameters to pass to datasource plugin of mapnik diff --git a/config/environments/test.js.example b/config/environments/test.js.example index 9da8aeb7..a6761972 100644 --- a/config/environments/test.js.example +++ b/config/environments/test.js.example @@ -9,7 +9,7 @@ var config = { ,socket_timeout: 600000 ,enable_cors: true ,cache_enabled: false - ,log_format: '[:date] :req[X-Real-IP] :method :req[Host]:url :status :response-time ms -> :res[Content-Type]' + ,log_format: '[:date] :req[X-Real-IP] :method :req[Host]:url :status :response-time ms -> :res[Content-Type] (:res[X-Tiler-Profiler])' ,postgres_auth_user: 'test_cartodb_user_<%= user_id %>' ,postgres: { // Parameters to pass to datasource plugin of mapnik From 3819d0d47b089de846603769947f5cd938d6aeef Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Thu, 18 Jul 2013 11:13:41 +0200 Subject: [PATCH 10/13] Upgrade windshaft to improve profiling --- NEWS.md | 3 ++- npm-shrinkwrap.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/NEWS.md b/NEWS.md index ff12e8c9..033ece3e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,11 +2,12 @@ ------ * Set Last-Modified header to allow for 304 responses * Add profiling support (needs useProfiler in env config file) +* Fix double-checking for layergroups with no interactivity 1.3.2 ------ * Set default layergroup TTL to 2 hours -* Server multilayer tiles and grid with persistent cache control +* Serve multilayer tiles and grid with persistent cache control 1.3.1 ------ diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 6c62c2b6..9e6de77d 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -9,7 +9,7 @@ "version": "1.3.3" }, "windshaft": { - "version": "0.13.0", + "version": "0.13.1", "dependencies": { "grainstore": { "version": "0.13.6", @@ -72,7 +72,7 @@ "version": "0.3.4" }, "sqlite3": { - "version": "2.1.13" + "version": "2.1.14" }, "mime": { "version": "1.2.9" diff --git a/package.json b/package.json index 718b7228..d08933c9 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "dependencies": { "node-varnish": "0.1.1", "underscore" : "~1.3.3", - "windshaft" : "~0.13.0", + "windshaft" : "~0.13.1", "step": "0.0.x", "generic-pool": "~2.0.3", "redis": "~0.8.3", From bce024961f274c248d2cd2647de82165c364aa63 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Thu, 18 Jul 2013 11:51:00 +0200 Subject: [PATCH 11/13] Add note about layergroup logging at creation The change is due to Windshaft upgrade. Closes #76 --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 033ece3e..92fd58fc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,7 @@ * Set Last-Modified header to allow for 304 responses * Add profiling support (needs useProfiler in env config file) * Fix double-checking for layergroups with no interactivity +* Log full layergroup config at creation time (#76) 1.3.2 ------ From 22130f37df281ba189f7f9b44e28c27887816851 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Fri, 19 Jul 2013 12:28:03 +0200 Subject: [PATCH 12/13] Fix URLS and repository, add contributors, change author Author became Vizzuality and contributors are the actual committers --- package.json | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index d08933c9..03bff13d 100644 --- a/package.json +++ b/package.json @@ -3,19 +3,24 @@ "name": "windshaft-cartodb", "version": "1.3.3", "description": "A map tile server for CartoDB", - "url": "https://github.com/Vizzuality/Windshaft-cartodb", + "url": "https://github.com/CartoDB/Windshaft-cartodb", "licenses": [{ "type": "BSD", - "url": "https://github.com/Vizzuality/Windshaft-cartodb/blob/master/LICENCE" + "url": "https://github.com/CartoDB/Windshaft-cartodb/blob/master/LICENCE" }], - "repositories": [{ + "repository": { "type": "git", - "url": "git://github.com/Vizzuality/Windshaft-cartodb.git" - }], + "url": "git://github.com/CartoDB/Windshaft-cartodb.git" + }, "author": { - "name": "Simon Tokumine, Javi Santana, Vizzuality", + "name": "Vizzuality", "url": "http://vizzuality.com", - "email": "simon@vizzuality.com" + "email": "info@vizzuality.com" + }, + "contributors": { + "Simon Tokumine ", + "Javi Santana ", + "Sandro Santilli " }, "dependencies": { "node-varnish": "0.1.1", From b4045353ea745fa868972ccf9431ffebf00c7474 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Fri, 19 Jul 2013 12:34:20 +0200 Subject: [PATCH 13/13] Fix contributors, use short form for author --- package.json | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 03bff13d..b6a9a535 100644 --- a/package.json +++ b/package.json @@ -12,16 +12,12 @@ "type": "git", "url": "git://github.com/CartoDB/Windshaft-cartodb.git" }, - "author": { - "name": "Vizzuality", - "url": "http://vizzuality.com", - "email": "info@vizzuality.com" - }, - "contributors": { + "author": "Vizzuality (http://vizzuality.com)", + "contributors": [ "Simon Tokumine ", "Javi Santana ", "Sandro Santilli " - }, + ], "dependencies": { "node-varnish": "0.1.1", "underscore" : "~1.3.3",