Windshaft-cartodb/NEWS.md
2015-05-18 18:11:48 +02:00

22 KiB

Changelog

2.3.1

Released 2015-mm-dd

2.3.0

Released 2015-05-18

Announcements:

  • Upgrades cartodb-redis for global map stats

2.2.0

Released 2015-04-29

Enhancements:

  • jshint is run against tests
  • tests moved to mocha's describe

New features:

  • Fastly surrogate keys invalidation for named maps
    • New configuration entry: fastly. Check example configurations for more information.
  • PgQueryRunner extracted from QueryTablesApi so it can be reused in new TablesExtentApi
  • New top level element, view, in templates that holds attributes to identify the map scene.
  • Named maps static preview in /api/v1/map/static/named/:name/:width/:height.:format endpoint
    • It will be invalidated if the named map changes
    • But have a Cache-Control header with a 2 hours max-age, won't be invalidated on data changes

2.1.3

Released 2015-04-16

Announcements:

  • Upgrades windshaft to 0.42.2

2.1.2

Released 2015-04-15

Bug fixes:

  • Do not check statsd_client in profiler

Announcements:

  • Upgrades windshaft to 0.42.1

2.1.1

Released 2015-04-10

Bug fixes:

  • Do not add x-cache-channel header for GET template routes

2.1.0

Released 2015-04-09

Announcements:

  • Upgrades windshaft to 0.42.0

2.0.0

Released 2015-04-08

Announcements:

  • Major release with BREAKING CHANGES:
  • Removes /:table/infowindow, /:table/map_metadata and /:table/flush_cache endpoints
  • Sample configuration removes /tiles/template and /tiles/layergroup
  • URLs to use from now on are: /api/v1/map/named and /api/v1/map
  • No more state changes for styles
  • No more dump stats for renderers: SIGUSR1 and SIGUSR2 signals
  • Removes query params:
    • sql
    • geom_type
    • cache_buster
    • cache_policy
    • interactivity
    • style
    • style_version
    • style_convert
    • scale_factor
  • Affected tables for x-cache-channel will use direct connection to postgresql
  • Removes some metrics: authorized times ones
  • Mapnik renderer configuration not part of the renderer root configuration
    • All configuration must be moved into renderer.mapnik, see config/environments/*.js.example for reference
  • Removes rollbar as optional logger

1.30.0

Released 2015-03-11

Announcements:

  • Upgrades windshaft to 0.40.0

1.29.0

Released 2015-03-09

Announcements:

  • Upgrades windshaft to 0.39.0

1.28.5

Released 2015-02-20

Announcements:

  • Upgrades windshaft to 0.37.5

1.28.4

Released 2015-02-18

Announcements:

  • Upgrades windshaft to 0.37.4

1.28.3

Released 2015-02-17

Announcements:

  • Upgrades windshaft to 0.37.3

1.28.2

Released 2015-02-17

Announcements:

  • Upgrades windshaft to 0.37.2

1.28.1

Released 2015-02-17

Announcements:

  • Upgrades windshaft to 0.37.1

1.28.0

Released 2015-02-17

Announcements:

  • Upgrades windshaft to 0.37.0

New features:

  • QueryTablesApi will always use an authenticated query to retrieve last update, this allows to query affected private tables last update (#253)

1.27.0

Released 2015-02-16

Announcements:

  • Adds default image placeholder for http renderer to use as fallback

New features:

Bugfixes:

  • Fixes tests with beforeEach and afterEach triggers

1.26.2

Released 2015-01-28

Bugfixes:

  • Accept 'open' string in templates' auth as authorized.

1.26.1

Released 2015-01-28

Announcements:

1.26.0

Released 2015-01-27

Announcements:

  • Upgrades windshaft to 0.35.0, supports mapconfig version 1.3.0

1.25.0

Released 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 responsibility 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 responsible 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

Released 2015-01-15

Announcements:

  • Upgrades windshaft to 0.34.0 for retina support

1.23.1

Released 2015-01-14

Announcements:

  • Regenerate npm-shrinkwrap.json

1.23.0

Released 2015-01-14

Announcements:

  • Upgrades windshaft to 0.33.0

New features:

  • Sets HTTP renderer configuration in server_options

1.22.0

Released 2015-01-13

New features:

  • Health check endpoint

1.21.2

Released 2014-12-15

Announcements:

  • Upgrades windshaft to 0.32.4

1.21.1

Released 2014-12-11

Announcements:

  • Upgrades windshaft to 0.32.2

Bugfixes:

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

1.21.0

Released 2014-10-24

New features:

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

1.20.2

Released 2014-10-20

Announcements:

  • Upgrades windshaft to 0.31.0

1.20.1

Released 2014-10-17

Announcements:

  • Upgrades redis-mpool to 0.3.0

1.20.0

Released 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

Released 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

Released 2014-10-13

Bug fixes:

  • Defaults resultSet to object if undefined in QueryTablesApi

Announcements:

  • Upgrades windshaft to 0.28.1

1.18.1

Released 2014-10-13

New features:

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

1.18.0

Released 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

Released 2014-10-01

Announcements:

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

1.17.1

Released 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

Released 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

Released 2014-08-19

Enhancements:

  • Upgrades cartodb-redis

1.16.0

Released 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

Released 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

Released 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

Released 2014-08-04

Enhancements:

  • Profiler header sent as JSON string

1.13.0

Released 2014-07-30

New features:

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

1.12.1

Released 2014-06-24

Enhancements:

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

1.12.0

Released 2014-06-24

New features:

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

1.11.1

Released 2014-05-07

Enhancements:

1.11.0

Released 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

Released 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

Released 2014-03-21

Bug fixes:

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

1.10.0

Released 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

Released 2014-03-10

New features:

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

1.8.5

Released 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

Released 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

Released 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

Released 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

Released 2014-02-19

Enhancements:

  • Use log4js logger (#138)

Bug fixes:

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

1.8.0

Released 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

Released 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

Released 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

Released 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

Released 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

Released 2014-01-15

Bug fixes:

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

1.6.0

Released 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

Released 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

Released 2013-11-28

Bug fixes:

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

1.5.0

Released 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

Released 2013-11-08

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

1.4.0

Released 2013-10-31

  • Add Support for Mapnik-2.2.0 (#78)

1.3.6

Released 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

Released 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

Released 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

Released 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

Released DD//MM//YY

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

1.1.4

Released 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

Released 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

Released 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

Released 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

Released (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

Released 03/10/12

  • Migrated to node 0.8.x.

0.9.0

Released 25/09/12

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