Skip to content

v0.30.0

Compare
Choose a tag to compare
@spladug spladug released this 14 May 16:37

Important News

This will be the last version of Baseplate.py to support Python 3.5 and lower (including 2.7). We will continue to publish bugfixes for this release going forward to support services stuck on old Pythons, but all new development will expect Python 3.6 or newer.

New Features

Ratelimit tools

Baseplate now has helpers for maintaining ratelimit counters in Memcached or Redis. You can use this to correctly apply ratelimits to actions in your application.

See the docs for more information.

More runtime metrics

The previous release (v0.29) added a new system of per-process server metrics. This release adds two more things to watch: garbage collector stats and event loop blocker monitoring. These metrics will help you understand if your application is stalling in ways that would cause weird p99 spikes across many requests.

See the docs for more information.

Credential secrets

Services often need to securely store username/password pairs. Baseplate now has a convention for doing so called a credential secret. In addition, the sqlalchemy integration now uses this new credential type and you can expect other integrations to do so in the future.

See the secrets store docs for more information on credential secrets and the sqlalchemy integration docs for how to use that with SQL databases.

Changes

  • The FileWatcher can now pass various options (encoding, binary mode, etc.) through to the open call when it loads the watched file.
  • The configuration prefix used by secrets_store_from_config and experiments_client_from_config is now configurable.
  • Potentially breaking: an accidental logger attribute has been removed from the context object.
  • Timers can now be sent manually without start/stop.
  • When a metrics batch is too large, we also log the counters found in that batch. This error generally indicates that the service is doing far too much in a single request and the counters can help figure out what operation is being repeated many times.
  • Experiments can now use more targeting operators like gt, lt, etc. and specify ranges of values they apply to.
  • Trace publishers now send larger batches to reduce load on Zipkin.
  • baseplate-tshell now supports IPython 5+.
  • baseplate-tshell now activates readline for proper text editing.
  • Development has moved into the OneVM and the tooling has been modernized.

Bug Fixes

  • A race condition in the Cassandra integration was fixed. You should no longer get "timer already stopped" errors from the Cassandra timers.
  • A regression in parsing the Sampled header on upstream spans in Pyramid services was fixed.
  • Thrift header names are now case-insensitive. This allows them to transit systems like Envoy that canonicalize the names to lower case.
  • The message queue helper properly prints messages without b"" artifacts.
  • An exception in the experiments framework is now caught and turned into a mismatch safely.