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 tocoronerd.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
andELF
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.