Windshaft-cartodb/NEWS.md
2015-01-26 17:30:51 +01:00

19 KiB

1.25.0 -- 2015-01-26

Announcements:

  • No more signed maps (#227 and #238)
    • Splits template maps endpoint into its own controller
    • Removes TemplateMaps dependency on SignedMaps
    • Token validation is done against the template
    • Template is always extended with default values for auth and placeholders
    • MapConfig is extended, in order to validate auth_tokens, with template info:
      • template name
      • template auth
    • No more locks to create, update or delete templates
      • Trusting in redis' hash semantics
      • Some tradeoffs:
        • A client having more templates than allowed by a race condition between limit (HLEN) check and creation (HSET)
        • Updating a template could happen while deleting it, resulting in a new template
        • Templates already instantiated will be accessible through their layergroup so it is possible to continue requesting tiles/grids/etc.
    • Authorisation is now handled by template maps
    • Template instantiation returns new instances with default values if they are missing

New features:

  • Basic layergroup validation on named map creation/update (#196)
  • Add named maps surrogate keys and call invalidation on template modification/deletion (#247)
    • Extends TemplateMaps backend with EventEmitter
      • Emits for create, update and delete templates
    • VarnishHttpCacheBackend will invalidate a varnish instance via HTTP PURGE method
      • In the future there could be more backends, for instance to invalidate a CDN.
    • NamedMapsEntry has the responibility to generate a cache key for a named map
      • It probably should receive a template/named map instead of owner and template name
    • SurrogateKeysCache is resposible to tag responses with a header
      • It also is responsible for invalidations given an Invalidation Backend
      • In the future it could have several backends so it can invalidates different caches
    • SurrogateKeysCache is subscribed to TemplateMaps events to do the invalidations

1.24.0 -- 2015-01-15

Announcements:

  • Upgrades windshaft to 0.34.0 for retina support

1.23.1 -- 2015-01-14

Announcements:

  • Regenerate npm-shrinkwrap.json

1.23.0 -- 2015-01-14

Announcements:

  • Upgrades windshaft to 0.33.0

New features:

  • Sets HTTP renderer configuration in server_options

1.22.0 -- 2015-01-13

New features:

  • Health check endpoint

1.21.2 -- 2014-12-15

Announcements:

  • Upgrades windshaft to 0.32.4

1.21.1 -- 2014-12-11

Announcements:

  • Upgrades windshaft to 0.32.2

Bugfixes:

  • Closes fd for log files on kill -HUP (#230)

1.21.0 -- 2014-10-24

New features:

  • Allow a different cache-control max-age for layergroup responses

1.20.2 -- 2014-10-20

Announcements:

  • Upgrades windshaft to 0.31.0

1.20.1 -- 2014-10-17

Announcements:

  • Upgrades redis-mpool to 0.3.0

1.20.0 -- 2014-10-15

New features:

  • Report to statsd the status of redis pools
  • Upgrades Windshaft to start reporting redis/renderers/mapnik pool metrics

Enhancements:

  • Share one redis-mpool across the application

1.19.0 -- 2014-10-14

Announcements:

  • Dropping support for npm <1.2.1 npm-shrinkwrap.json is incompatible when generated with npm >=1.2.1 and consumed by npm <1.2.1
  • Upgrades windshaft to 0.28.2
  • Generates npm-shrinkwrap.json with npm >1.2.0

1.18.2 -- 2014-10-13

Bug fixes:

  • Defaults resultSet to object if undefined in QueryTablesApi

Announcements:

  • Upgrades windshaft to 0.28.1

1.18.1 -- 2014-10-13

New features:

  • Allow to add more node.js' threadpool workers via process.env.UV_THREADPOOL_SIZE

1.18.0 -- 2014-10-03

Announcements:

  • Comes back to use mapnik 2.3.x based on cartodb/node-mapnik@1.4.15-cdb from windshaft@0.28.0

1.17.2 -- 2014-10-01

Announcements:

  • Upgrades windshaft to 0.27.2 which downgrades node-mapnik to 0.7.26-cdb1

1.17.1 -- 2014-09-30

Announcements:

  • Upgrades windshaft to 0.27.1 which downgrades node-mapnik to 1.4.10

Enhancements:

  • TTL for template locks so they are not kept forever
  • Upgrades mocha

1.17.0 -- 2014-09-25

New features:

  • Starts using mapnik 2.3.x

Enhancements:

  • Upgrades windshaft and cartodb-redis
  • Supports !scale_denominator! dynamic param in SQL queries
  • Metrics revamp: removes and adds some metrics
  • Adds poolSize configuration for mapnik

1.16.1 -- 2014-08-19

Enhancements:

  • Upgrades cartodb-redis

1.16.0 -- 2014-08-18

New features:

  • Configurable QueryTablesAPI to call directly postgresql using cartodb-psql or to keep using a request to the SQL API

Enhancements:

  • Removes mapnik dependency as it now relies on Windshaft to check mapnik version
  • Upgrades dependencies:
    • underscore
    • lzma
    • log4js
    • rollbar
    • windshaft
    • request

1.15.0 -- 2014-08-13

Enhancements:

  • Upgrades dependencies:
    • redis-mpool
    • cartodb-redis
    • windshaft
  • Specifies name in the redis pool
  • Slow pool configuration in example configurations

1.14.0 -- 2014-08-07

Enhancements:

  • SQL API requests moved to its own entity

New features:

  • Affected tables and last updated time for a query are performed in a single request to the SQL API
  • Allow specifying the tile format, upgrades windshaft and grainstore dependencies for this matter

1.13.1 -- 2014-08-04

Enhancements:

  • Profiler header sent as JSON string

1.13.0 -- 2014-07-30

New features:

  • Support for postgresql schemas
  • Use public user from redis
  • Support for several auth tokens

1.12.1 -- 2014-06-24

Enhancements:

  • Caches layergroup and sets X-Cache-Channel in GET requests also in named maps

1.12.0 -- 2014-06-24

New features:

  • Caches layergroup and sets X-Cache-Channel in GET requests

1.11.1 -- 2014-05-07

Enhancements:

1.11.0 -- 2014-04-28

New features:

  • Add support for log_filename directive
  • Reopen log file on SIGHUP, for better logrotate integration

Enhancements:

  • Set default PostgreSQL application name to "cartodb_tiler"

1.10.2 -- 2014-04-08

Bug fixes:

  • Fix show_style tool broken since 1.8.1
  • Fix X-Cache-Channel of tiles accessed via signed token (#188)

1.10.1 -- 2014-03-21

Bug fixes:

  • Do not cache non-success jsonp responses (#186)

1.10.0 -- 2014-03-20

New features:

  • Add optional support for rollbar (#150)

Enhancements:

  • Do not send connection details to client (#183)
  • Upgrade node-varnish to 0.3.0
  • Upgrade Windshaft to 0.20.0, see http://github.com/CartoDB/Windshaft/blob/0.20.0/NEWS
  • Include tiler version in startup log
  • Install an uncaught exception handler
  • Require own fork of node-mapnik, with temptative fix for libxml usage (glibc detected corruptions)

Other changes:

  • Switch to 3-clause BSD license (#184)

1.9.0 -- 2014-03-10

New features:

  • Allow to set server related configuration in serverMetadata (#182)

1.8.5 -- 2014-03-10

Enhancements:

  • Set statsd prefix for all endpoints
  • Respond with a permission denied on attempt to access map tiles waiving signature of someone who had not left any (#170)
  • Do not log an error on GET / (#177)
  • Do not UNWATCH on every redis client release (#161)
  • Include API docs (#164)
  • Add "cacheDns" statsd setting in the example configs
  • Do not send duplicated stats on template instanciation
  • Do not die on dns resolution errors (#178, #180)

Bug fixes:

  • Do not cache map creation responses (#176)

1.8.4 -- 2014-03-03

Enhancements:

  • Really skip CDB_TableMetadata lookup for sql affected by no tables (#169)
  • Upgrade windshaft to 0.19.2, see node_modules/windshaft/NEWS
  • Clarify obscure "ECONNREFUSED" error message (#171)
  • Change some http status responses to be more appropriate to the case
  • Forbid using map signatures of foreign users (#172)
  • Forbid instanciating templates of foreign users (#173)
  • Allow passing environment configuration name via NODE_ENV to app.js
  • Print environment configuration name on app start

Bug fixes:

  • Fix database connection settings on template instanciation (#174)

1.8.3 -- 2014-02-27

Enhancements:

  • Upgrades windshaft to 0.19.1 with many performance improvements, See node_modules/windshaft/NEWS
  • Improve speed of instanciating a map (#147, #159, #165)
  • Give meaningful error on attempts to use map tokens with attribute service (#156)
  • Reduce sql-api communication timeout, and allow overriding (#167) [ new sqlapi.timeout directive, defaults to 100 ms ]
  • Do not query CDB_TableMetadata for queries affected by no tables (#168)

1.8.2 -- 2014-02-25

Enhancements:

  • Allow using ":host" as part of statsd.prefix (#153)
  • Expand "addCacheChannel" stats
  • Allow using GET with sql-api for queries shorter than configured len (#155) [ new sqlapi.max_get_sql_length directive, defaults to 2048 ]
  • Do not log an error for a legit request requiring no X-Cache-Channel

Bug fixes:

  • Fix munin plugin after log format changes (#154)

1.8.1 -- 2014-02-19

Enhancements:

  • Use log4js logger (#138)

Bug fixes:

  • Always generate X-Cache-Channel for token-based tile responses (#152)

1.8.0 -- 2014-02-18

Enhancements:

  • Add script to flush caches (#140)
  • Add script to list templates
  • Add statsd support (#139)
  • Add support for specifying a varnish password
  • Avoid sending multiple varnish invalidation at once (#135)
  • Tested with node-0.10 (#141)
  • Use single redis pooler for torque and grainstore
  • Reduce cost of garbage collection for localized resources
  • Allow limiting number of templates for each user (#136)
  • Allow configuring TTL of mapConfigs via "mapConfigTTL"

1.7.1 -- 2014-02-11

Enhancements:

  • Disable debug logging unless "debug" config param evaluates to true (#137)
  • Require windshaft 0.17.2 for further reducing log noise (#137)

1.7.0 -- 2014-02-11

New features:

  • Add support for torque tiles (#112)
  • Add attributes service (#118)
  • Implement Unified Map API (#126)
  • Make endpoints configurable (#127)

Enhancements:

  • Allow specifying fixed sqlapi host address (#117)
  • Include template hash in template instance response, to keep caches of different instances separated (#105)

Bug fixes:

  • Allow space padding in template variables usage (#129)
  • Allow passing numbers as values for numeric template variables (#130)

1.6.3 -- 2014-01-30

Bug fixes:

  • layergroup accept both map_key and api_key (#91)
  • Fix public instanciation of signed template accessing private data (#114)
  • Fix show_style in presence of complex styles
  • Fix use of maxzoom in layergroup config (via windshaft-0.15.1)

Enhancements:

  • Add support for instanciating a template map with JSONP (#116)
  • Stop processing XML on renderer creation, not needed anymore since 1.6.1 introduced on-demand XML generation.

1.6.2 -- 2014-01-23

Bug fixes:

  • Fix support for long (>64k chars) queries in layergroup creation (#111)

Enhancements:

  • Enhance tools/show_style to accept an environment parameter and print XML style now it is not in redis anymore (#110)
  • Support CORS in template instanciation endpoint (#113)

1.6.1 -- 2014-01-15

Bug fixes:

  • Drop cache headers from error responses (#107)
  • Localize external CartoCSS resources at renderer creation time (#108)

1.6.0 -- 2014-01-10

New features:

  • Add 'user_from_host' directive to generalize username extraction (#100)
  • Implement signed template maps (#98)

Other changes:

  • Update cartodb-redis dependency to "~0.3.0"
  • Update redis-server dependency to "2.4.0+"

1.5.2 -- 2013-12-05

Bug fixes:

  • Fix configuration-level compatibility with versions prior to 1.5 (#96)
  • Fix use of old layergroups on mapnik upgrade (#97)

1.5.1 -- 2013-11-28

Bug fixes:

  • Survive presence of malformed CartoCSS in redis (#94)
  • Accept useless point-transform:scale directives (#93)

1.5.0 -- 2013-11-19

NOTE: new configuration directives postgres_auth_pass and postgres.password added; see config/environments/*.example for documentation.

Improvements:

  • Add support for configuring database connection passwords
  • Optionally read user-specific database_host and database_password from redis as per CartoDB-2.5.0 model (#88, #89)
  • Do not force ending dot in SQL-API hostname, for easier testing

Bug fixes:

  • Return CORS headers when creating layergroups via GET (windshaft/#92)
  • Fix http status on database authentication error (windshaft/#94)
  • Fix text-face-name error at layergroup creation (windshaft/#93)

Other changes:

  • CartoDB redis interaction delegated to "cartodb-redis" module

1.4.1 -- 2013-11-08

  • Fix support for exponential notation in CartoCSS filter values (#87)

1.4.0 -- 2013-10-31

  • Add Support for Mapnik-2.2.0 (#78)

1.3.6 -- 2013-10-11

  • Restore support for node-0.8.9 accidentally dropped by 1.3.5 NOTE: needs removing node_modules/windshaft and re-running npm install

1.3.5 -- 2013-10-03

  • Fixing apostrophes in CartoCSS
  • Fix "sql/table must contain zoom variable" error when using "[ zoom > 3]" CartoCSS snippets (note the space)
  • Fix backward compatibility handling of sqlapi.host configuration (#82)
  • Fix error for invalid text-name in CartoCSS (#81)
  • Do not let anonymous requests use authorized renderer caches

1.3.4

NOTE: configuration sqlapi.host renamed to sqlapi.domain (support for "sqlapi.host" is retained for backward compatibility)

  • Improve empty CartoCSS error message
  • Improve invalid mapnik-geometry-type CSS error message
  • Fix race condition in localization of network resources

1.3.3

  • 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

  • Set default layergroup TTL to 2 hours
  • Serve multilayer tiles and grid with persistent cache control

1.3.1

  • Fix deadlock on new style creation
  • Fix database authentication with multi-table layergroups
  • Add tile and grid fetching checks at layergroup creation time
  • Fix SQL error reporting to NOT split on newline
  • Fix support for CartoCSS attachments

1.3.0

1.2.1

  • Fix multilayer post from firefox
  • Fix multilayer cartocss layer name handling

1.2.0

  • Multilayer API changes
    • Layers passed by index in grid fetching url
    • Interactivity only specified in layergroup config
    • Embed cache_buster within token
    • Use ISO format for last_modified timestamp
  • Expected LZMA encoding changed to base64

1.1.10

  • Fix regression with default interactivity parameter (#74)
  • More verbose logging for SQL api connection errors
  • Write stats for multilayer map token request

1.1.9

  • Handle SQL API errors by requesting no Varnish cache
  • Fix X-Cache-Channel for multilayer (by token) responses
  • Add last_modified field to layergroup creation response (#72)
  • Deprecate signal handler for USR1, add handler for USR2 (#71)
  • Fix support for ampersend characters in CartoCSS
  • Add support for LZMA compressed GET parameters
  • Add support for creating layergroups via GET

1.1.8

  • Require Windshaft-0.9.1, to reduce harmfulness of cache_buster param

1.1.7 (DD//MM//YY)

  • Do not let /etc/services confuse FD checker (munin plugin)
  • Multilayer support (#72)
  • Expose renderer settings in the environment config files

1.1.6 (19//02//13)

  • Require windshaft 0.8.5, fixing some stability issues and providing cache info on request
  • Require grainstore 0.10.9, fixing an issue with multi-geom markers
  • Enhance run_tests.sh to allow running single tests and skipping preparation
  • Fix async throws in getGeometryType, getInfoWindow and getMapMetadata
  • Survive connection refusals from redis
  • Add maxConnection environment configuration, default to 128

1.1.5 (DD//MM//YY)

  • Fix bogus cached return of utf grid for fully contained tiles (#67)

1.1.4 (DD//MM//YY)

  • Reduce default extent to allow for consistent proj4 round-tripping
  • Enhance reset_styles script to use full configuration (#62)
  • Have reset_styles script also drop extended keys (#58)
  • Fix example postgis parameter for simplifying input geoms (#63)
  • Add row_limit to example config (#64)

1.1.3 (30//11//12)

  • Fix reset_styles script to really skip extended keys
  • CartoCSS versioning
  • Mapnik-version dependent default styles
  • Enhance 2.0 -> 2.1 transforms:
  • styles with conditional markers
  • scale arrow markers by 50%

1.1.2 (DD//MM//YY)

  • CartoCSS versioning
  • Fix use of "style_version" with GET (inline styles)
  • Enhance 2.0 -> 2.1 transforms:
  • styles with no semicolon
  • markers shift due to geometry clipping

1.1.1 (DD//MM//YY)

  • Add support for persistent client cache headers
  • Fix crash on unknown user (#55)
  • Add /version entry point
  • CartoCSS versioning
  • Include style_version in GET /style response
  • Support style_version and style_convert parameters in POST /style request
  • Support style_version in GET /:z/:x/:y request

1.1.0 (30/10/12)

  • Add /version entry point
  • CartoCSS versioning
  • Include version in GET /style response
  • Support version and convert parameters in POST /style request
  • Autodetect target mapnik version and let config override it
  • Add tools/reset_styles script to batch-reset (and optionally convert) styles
  • Configurable logging format (#4)
  • Detailed error on missing user metadata
  • Properly handle unauthenticated requests for metadata
  • Accept "api_key" in addition to "map_key", both in query_string and POST body (#38)
  • Add ./configure script
  • Allow listening on host IP
  • Replaced environment configs by .example ones
  • Fixed some issues with cluster2

1.0.0 (03/10/12)

  • Migrated to node 0.8.x.

0.9.0 (25/09/12)

  • External resources in CartoCSS
  • Added X-Cache-Channel header in all the tiler GET requests
  • Small fixes