Releases: honeycombio/refinery
Releases · honeycombio/refinery
v0.11.0
implement optional soft allocation ceiling | #139
use more efficient wire serialization | #141
send excess traces when reducing cache size | #142
add mutex locking to fileConfig | #143
only re-route incoming spans | #145
don't block batch endpoint on most queues | #146
add cache utilization and root span metrics | #150
peers list should not be required in config | #148
consolidate event handling code | #149
Rules Base Sampler | #151
v0.10.0
v0.10.0 2020-09-17
Note: There are breaking configuration changes in this release.
- The way sampler rules are described has changed. The
_default
setting is removed and the default is now listed above the specific dataset rules.SamplerConfig
has also been removed from each of the dataset keys. Seerules.toml
for more information.
Improvements:
- Reduce allocations for unused log entries by using a new Logger interface to no-op log operations on disabled log levels.
- Lower the memory footprint when the cache capacity is set larger than necessary by removing traces from the cache after they are sent.
- Simplify the way sampler rules are described. The
_default
setting is removed and the default is now listed above the specific dataset rules.SamplerConfig
has also been removed from each of the dataset names. Seerules.toml
for more information. - Add validation for configuration fields on startup and validate nested configurations that are needed if another config value is present, such as as
HoneycombMetrics
. - Simplify the collect loop to always drain from the peer channel first.
- Reload all sampler settings on changes to
rules.toml
. We now discard all of the samplers when the config changes so that they can be re-created with the new config data.
Fixes:
- Fix the perf regression associated with repeatedly touching already sent traces in
sendTracesInCache()
, by removing traces from the cache after they are sent. - Fix data races, including a shutdown data race in
InMemCollector.Stop
and several test races found withgo test -race
.
v0.9.0
v0.9.0 2020-09-01
Features:
- Adds dry run mode. When getting started with samproxy or when updating sampling rules, it may be helpful to verify that the rules are working as expected before you start dropping traffic. By enabling dry run mode, all spans in each trace will be marked with the sampling decision in a field called
samproxy_kept
. All traces will be sent to Honeycomb regardless of the sampling decision. You can then run queries in Honeycomb on this field to check your results and verify that the rules are working as intended. Enable dry run mode by addingDryRun = true
in your configuration, as noted inrules.toml
.
Improvements:
- Libhoney-go supports msgpack. Now samproxy does as well.
- Adds the stack trace to the logger in the case of panics.
- Allow the debug service address to be specified in config. Specify the address in
config.toml
usingDebugServiceAddr
.
Fixes:
- The peer list can temporarily become empty when using Redis discovery and the Redis state is lost (e.g. restarting an in-memory instance). This caused a panic when attempting to choose a shard, and resulted in dropping spans. Now, we return an error when there are no peers, which means that it will surface the error to the logs and re-attempt later.
v0.8.0
v0.8.0 2020-08-21
Note: There are several breaking configuration changes in this release.
- The sampling rules configuration was split into a separate file from the main configuration file. You can specify the path to the main config file through the command line flag
-c
, as before. The rules file path can be specified with-r
. The paths default to/etc/samproxy/samproxy.toml
and/etc/samproxy/rules.toml
. - The
-p
command line flag for configuring redis is deprecated. Instead, there is aPeer Management
section in the main config file whereType="redis"
should be specified. This field defaults toType="file"
. All other redis configuration remains unchanged. - The configuration fields of
SendDelay
andTraceTimeout
have been switched to type oftime.duration
.
Features:
- Add EMA Dynamic Sampler implementation
Improvements:
- Process accumulated traces on a single time interval instead of per trace, which uses a lot less CPU to do the same job in the same time
- Split config into
config.toml
for general configuration andrules.toml
for sampling, and add reasonable defaults to ease the startup experience - Simplify startup flow when using redis
- Use Viper to manage configuration
- Use go modules instead of vendored dependencies
- Add
samproxy/version
to user agent addition - Add
-debug
flag which when used, will run a debug service on port 6060 (The debug service allows you to use pprof to visualize and analyze profiling data.) - Switch to
time.duration
for several config values, includingSendDelay
andTraceTimeout
Fixes:
- Fix race when prometheus starts
- Prevent queue overflow errors from Honeycomb Logger on startup
- Fix missing metrics registered with the wrong name or not registered at all
v0.7.0: Merge pull request #58 from honeycombio/travis.redis-ip
[redis] allow IP and other host identifiers
v0.6.1: Merge pull request #57 from honeycombio/toshok.send-using-sync-once
It looks to be (theoretically, I haven't verified by testing it) possible for multiple goroutines to end up in this particular switch arm at the same time. Use a `sync.Once` to make sure that even if that happens they can't both try to close the channel and/or send the trace.
v0.6.0: Merge pull request #55 from subnova-etsy/clearfrequencysec
Add support for specifying the ClearFrequencySec attribute
v0.5.3: Merge pull request #54 from honeycombio/tredman.zstd-support
[router] add zstd support
v0.5.2
fix fpm output path
v0.5.1: Merge pull request #50 from honeycombio/travis.libhoney-bump
Bump libhoney to v1.12.1