Skip to content

Releases: reddit/baseplate.go

v0.9.12-beta.7

27 Feb 17:15
Compare
Choose a tag to compare
v0.9.12-beta.7 Pre-release
Pre-release

Important Notes

Breaking Changes

  • Latency Metrics: The latency buckets that are used for prometheus metrics have changed to reflect the baseplate spec. If you were using apdex-style queries with harded-coded le= buckets, these buckets will be changing. Let us know if you need help adjusting your queries to account for this.
  • HTTP Size Buckets: The request and response size buckets are changing to reflect the baseplate spec. Again, let us know if you need help accommodating this change.

Compatibility

  • Baseplate.go v0.9.12 will require Go 1.19 or later.

What's Changed since Beta 6

  • thriftbp: Add special handling of context.Canceled in prom labels by @fishy in #590
  • thriftbp: Force recoverPanik to be the last server middleware by @fishy in #593
  • thriftbp: Add a counter for opener calls in client pool by @fishy in #594
  • errorsbp: Add Prefix by @fishy in #603

Behavior Changes

  • tracing: Do not auto register ErrorReporterCreateServerSpanHook by @fishy in #600
  • httpbp: Make the HTTP size buckets usable by @reptile-deer-66 in #595

What's Changed since v0.9.11

  • Added Vault CSI support (set the secrets.json path to be the secrets mount directory)
  • Updated and added various Prometheus metrics to match the baseplate spec
  • httpbp: Enable passthrough of HTTP ResponseWriter optional interfaces (e.g. to permit hijacking)

New Contributors

Full Changelog: v0.9.12-beta.6...v0.9.12-beta.7

v0.9.12-beta.6

19 Dec 23:03
v0.9.12-beta.6
Compare
Choose a tag to compare
v0.9.12-beta.6 Pre-release
Pre-release

Important Notes

The latency buckets that are used for prometheus metrics have changed to reflect the baseplate spec. If you were using apdex-style queries with harded-coded le= buckets, these buckets will be changing. Let us know if you need help adjusting your queries to account for this.

What's Changed since Beta 5

  • The minimal version of Go is now 1.19+
  • secrets: Fixed Vault CSI support

v0.9.12-beta.5

16 Nov 18:36
v0.9.12-beta.5
Compare
Choose a tag to compare
v0.9.12-beta.5 Pre-release
Pre-release

Important Notes

The latency buckets that are used for prometheus metrics have changed to reflect the baseplate spec. If you were using apdex-style queries with harded-coded le= buckets, these buckets will be changing. Let us know if you need help adjusting your queries to account for this.

What's Changed since Beta 4

  • secrets: Fixed a bug that we no longer wait until secrets.json file to become available.

v0.9.12-beta.4

04 Nov 20:46
5fc5cda
Compare
Choose a tag to compare
v0.9.12-beta.4 Pre-release
Pre-release

Important Notes

The latency buckets that are used for prometheus metrics have changed to reflect the baseplate spec. If you were using apdex-style queries with harded-coded le= buckets, these buckets will be changing. Let us know if you need help adjusting your queries to account for this.

What's Changed

  • filewatcher: Implement support for directories by @fishy in #561
  • chore: Remove deprecated 'slug' label by @nanassito in #566
  • enable using the baseplate.spec default latency buckets by @ghirsch-reddit in #567
  • Update default Go metrics by @SuperQ in #564
  • Upgrade thrift to 0.17.0 by @fishy in #570
  • breakerbp: Fix prometheus gauge by @fishy in #571
  • Update gRPC metrics to match v2 and spec by @kylelemons in #572
  • feat(secrets): support for csi directories by @Tediferous in #565
  • httpbp: Set http.Server.ErrorLog by @fishy in #576
  • thriftbp: Match thrift client pool metrics to baseplate spec by @fishy in #577
  • [fix] httpbp middleware doesn't flush chunked responses by @adamthesax in #573
  • thriftbp+httpbp: Rename the RecoverPanic middlewares by @fishy in #580
  • Export the versions of Go modules linked into the binary by @kylelemons in #578
  • kafkabp: Metrics cleanup by @fishy in #579
  • thriftbp: Metrics cleanup by @fishy in #581
  • Metrics cleanups in other packages by @fishy in #582
  • maxprocs: Print newline after log by @mterwill in #583
  • Make reregistration of prom metrics resilient to v0 + v2 by @kylelemons in #584

New Contributors

Full Changelog: v0.9.11...v0.9.12-beta.4

v0.9.12-beta.3

01 Nov 19:30
53a15ba
Compare
Choose a tag to compare
v0.9.12-beta.3 Pre-release
Pre-release

Important Notes

The latency buckets that are used for prometheus metrics have changed to reflect the baseplate spec. If you were using apdex-style queries with harded-coded le= buckets, these buckets will be changing. Let us know if you need help adjusting your queries to account for this.

What's Changed

  • filewatcher: Implement support for directories by @fishy in #561
  • chore: Remove deprecated 'slug' label by @nanassito in #566
  • enable using the baseplate.spec default latency buckets by @ghirsch-reddit in #567
  • Update default Go metrics by @SuperQ in #564
  • Upgrade thrift to 0.17.0 by @fishy in #570
  • breakerbp: Fix prometheus gauge by @fishy in #571
  • Update gRPC metrics to match v2 and spec by @kylelemons in #572
  • feat(secrets): support for csi directories by @Tediferous in #565
  • httpbp: Set http.Server.ErrorLog by @fishy in #576
  • thriftbp: Match thrift client pool metrics to baseplate spec by @fishy in #577
  • [fix] httpbp middleware doesn't flush chunked responses by @adamthesax in #573
  • thriftbp+httpbp: Rename the RecoverPanic middlewares by @fishy in #580
  • Export the versions of Go modules linked into the binary by @kylelemons in #578

New Contributors

Full Changelog: v0.9.11...v0.9.12-beta.3

v0.9.12-beta.2

05 Oct 16:09
1f8e297
Compare
Choose a tag to compare
v0.9.12-beta.2 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.9.11...v0.9.12-beta.2

v0.9.12-beta.1

23 Sep 15:57
ad5ade7
Compare
Choose a tag to compare
v0.9.12-beta.1 Pre-release
Pre-release

Important Notes

The latency buckets that are used for prometheus metrics have changed to reflect the baseplate spec. If you were using apdex-style queries with harded-coded le= buckets, these buckets will be changing. Let us know if you need help adjusting your queries to account for this.

What's Changed

New Contributors

Full Changelog: v0.9.11...v0.9.12-beta.1

Prometheus Improvements and v2 preparation

30 Aug 16:17
316e844
Compare
Choose a tag to compare

Highlights

  • This adds _client_name labels in preparation for removal of _slug labels per baseplate spec
  • Prometheus metrics now include a baseplate_go constant metric to provide a path to coexistence of identical v0 and v2 metrics
  • New metrics for redis
  • More hooks have been added to improve the v2 compatibility layer

What's Changed

  • feat(prom): Add Prom metrics closer to the BP.spec for Redis clients by @nanassito in #552
  • internal/prometheusbp: Add HighWatermarkValue and HighWatermarkGauge by @fishy in #554
  • Add a global registry that forces a baseplate_go="v0" constant label by @kylelemons in #555
  • Baseplate.spec calls for <protocol>_client_name instead of <protocol>_slug by @nanassito in #556
  • feat(prom): Implement BP.spec metrics for the pool in redisbp. by @nanassito in #553
  • Move GlobalRegistry from internalv2compat to internal/prometheusbp by @fishy in #559
  • Allow changing the implementation of Interface at run-time by @kylelemons in #562

Important Notes

During the rollout of v0.9.12 code, you may see your latencies spike (typically to 30s). This is a result of the bucket changes that are happening above. Filter your charts based on your canary or the new replicasets to see the actual data. This is only a problem when mixing data in the same histogram from two sets of latency buckets and will go away once all replicas are updated.

Full Changelog: v0.9.10...v0.9.11

Fix a bug if two ecinterface.Interfaces are used

26 Aug 23:12
316e844
Compare
Choose a tag to compare
Allow changing the implementation of Interface at run-time (#562)

* Allow changing the implementation of Interface at run-time

This is primarily necessary during tests, as most production code won't need to change,
but this is based on an internal detail of atomic.Value, which asserts the underlying
type of the value being Store'd is always identical.  Since it doesn't see Interface,
it only sees interface{} (aka any), it actually cares about the concrete type.

There are various ways we can resolve this, covered in the benchmark,
and with the current compiler using atomic.Value with a concrete struct
type seems to be the winner.  This is faster than the older interface version
because the type assertion to a concrete type is faster than the type assertion
to an interface type.

* Be more cautious about the global load and add a test to ensure it doesn't panic
* Remove the 1.18-only (generic) benchmark since it's not actually _doing_ anything
* it's 1.19

v0.9.11-beta.2: Move GlobalRegistry from internalv2compat to internal/prometheusbpint

23 Aug 22:49
Compare
Choose a tag to compare
This is not really needed outside of Baseplate.go (unlike other stuff in
internalv2compat) so we can move it to an actual internal package to
stop fighting with staticcheck.

Also rename internal/prometheusbp to internal/prometheusbpint to avoid
the need to rename import when using it.

Also some fixups from previous commits:

1. We missed moving redisprom's MaxSizeGauge to GlobalRegistry
2. We missed moving custom exporters to GlobalRegistry
3. We didn't actually register the PromActive with prometheus register
4. SpanHook.PromActive is not something people can initialize outside of
   Baseplate.go, so unexport it.
5. Also add enforcement of prometheusbpint.GlobalRegistry to linters.sh