backtrace-coronerd 1.32.2

This version of coronerd includes support for PLCrashReporter, a new object reception mechanism, support for new symbol formats, improved performance and several bug fixes.

Features and Improvements

API

  • HTTP return codes are now used consistently on the receive path.
  • Significant improvements have been made to the core object storage and I/O subsystems, allowing for out-of-order attributes, attachments and objects. In addition to this, a new persistent identifier is used for ephemeral objects before final commit, exposed as the _rxid attribute. This attribute can be used interchangeably with any existing object identifier. It is now possible to query against previously submitted objects using these extensions.

Attributes

  • A new receive timestamp is now available, that stores the timestamp an object was received rather than the client-side generated timestamp of occurrence.
  • The object store will cache all unindexed attributes and a value associated with them. This will allow for easier identification of potential attributes to index against. This is exposed in morgue currently.
  • Semantics for UUID fields have been relaxed. Any valid hexadecimal string is cast to a valid 16-byte UUID. This is to cope with legacy libraries that incorrectly generate UUIDs.
  • The “none” format is now the default for all attributes without a specified format.

Database

  • Improved performance through improved lazy evaluation of aggregations in the presence of sort and limit criteria in queries.

Sampling

  • For customers with storage sampling enabled, observability of sampling has been improved with morgue sampling status.
  • Support has been added for multi-attribute sampling. It is possible to configure dynamic rate-based sampling bucketed by multiple attributes. The default is fingerprint, but users find it useful to include other attributes such as version or other custom attributes.

Security

  • ssl.prefer_server_ciphers is a new boolean option to coronerd.conf, allowing to specify server cipher preference should be used over client-side cipher preference.
  • ssl.dhparam is a new option, specifies a dhparam file to use for SSL sessions.
  • ssl.ecdh_curve, allows for specification of ECDH curves for SSL sessions.
  • A new restrict_guest top-level boolean option ahs been added. This permits guests to download JSON resource forks of objects, but unable to download the original file. In addition to this, it enables detailed audit logs of all get requests.
  • Unique e-mail addresses are now enforced along with username, and can now be used for password recovery purposes.

Supported Formats

  • A new attribute called _mod_faulting_tid can now be set on object submission of minidump objects. If it is set, it specifies the thread to use for deduplication. Customers primarly use this attribute to incorporate their watchdog system for detecting hung threads.
  • Support has been added for symbolicating JSON documents. It is now possible to submit JSON objects in unsymbolicated form, and Backtrace will symbolicate them asynchronously using the same dynamic symbol processing capabilities for minidump files.
  • Support has been added for PLCrashReporter. The object store is now able to ingest these files, just specify the plcrash format in the POST handler. Please refer to documentation for more information. Learn more here.
  • Support has been added for native dSYM and ELF debug information (both formatted in DWARF). Learn more here.

Bug Fixes

HTTP

  • Several bug fixes to memory management in the HTTP subsystem, including memory leaks impacting long-running workloads.
  • Fixes an issue with response message handling for multipart requests.

Retention Policies

  • Fixes an issue where new retention policies could not be added on a per-project basis.

Symbolification

These issues only impact minidump consumers.

  • Fixes an issue where code or debug identifiers casing was mismatched between different consumers in the system. This only impacts minidump consumers.
  • Fixes an issue where the missing symbol journal is not properly cleaned up. This can lead to unnecessary load being generated and wasted disk space.

Workflow Integrations

  • A limit has been introduced for watcher count and time thresholds.
  • Fixes an issue where a watcher may not be invoked if count or time thresholds have been exceeded until the next incoming object.