Skip to content

Releases: bookingcom/carbonapi

Release v0.3.0

11 Jul 09:37
f9014db
Compare
Choose a tag to compare

Change Log

BREAKING CHANGE: Refactor sendGlobsAsIs, Ref: 2ad1cca

CHANGE: Update go-graphite protocol to latest version
CHANGE: Refactor log levels
CHANGE: Upgrade go version in dockerfiles
CHANGE: Remove zapwriter
CHANGE: Change logger config name for compatibility
CHANGE: Upgrade to go-1.18
CHANGE: cairo: migrate from bitbucket.org/tebeka/strftime to github.com/tebeka/strftime

IMPROVEMENT: Corrected floats comparison in a test
IMPROVEMENT: Removed unnecessary logging to stderr during tests
IMPROVEMENT: Eliminate access logger
IMPROVEMENT: Refactor logging
IMPROVEMENT: Refactor linters
IMPROVEMENT: Add consistency stats, monitoring, logs

FEATURE: Add mismatched render response metric
FEATURE: Add weightedAverage function to carbonapi
FEATURE: carbonapi/config: support setting tz with IANA Time Zone names, like "Europe/Amsterdam"
FEATURE: carbonapi: introduce new function medianSeries
FEATURE: Introduce zipper majority vote, Ref deae024

BUGFIX: Fix duplicates in logs fields
BUGFIX: Fix bug in majority vote function, Ref: d04496d
BUGFIX: Support all white spaces in carbonapi parser, Ref: 365595d
BUGFIX: carbonapi/render: EvalExpr should return series no exist as error, Ref: 4ce89ef
BUGFIX: carbonapi/render: do not return error for parser.ErrSeriesDoesNotExist, Ref: e450430
BUGFIX: carbonapi/render: continue query execution instead of not found/404, Ref: f74343c

Release v0.2.0

18 Aug 07:21
03ba16d
Compare
Choose a tag to compare

This is a long overdue release where most of our efforts were spend on stability and testing.

This code was tested by fairly long production run.

Change Log

FEATURE: Add timeLagSeries function for computing a time lag
FEATURE: Add timeLagSeriesLists function
FEATURE: Implement filterSeries function
FEATURE: add integralByInterval function
FEATURE: asPercent: rewrite to support different resolution metrics
FEATURE: diffSeries: support different resolution metrics

CHANGE: Supported Go version is 1.16
CHANGE: When checking for block rules, accept absence of file as empty set of rules; no error in that case
CHANGE: carbonapi 404 is not considered an error anymore - carbonapi has separate metric for not-founds for find
CHANGE: Various Default Config changes
CHANGE: Removed x11 parameter to cairo, which is no longer supported.
CHANGE: Changed finds error fan-in logic

  • If all backends return and all errors are not found -> return 200 with empty body
  • If all backends return errors, and they are mixed -> return 500

CHANGE: Refactored the api to have one backend by design.
CHANGE: Removed back-end filtering for /info, /find, /render requests. Removed dummy merging for all these as well.
CHANGE: New error logic for zipper
CHANGE: Refactored render handler for api. The requests now fail per-target.
CHANGE: Made error merging in zipper more liberal: now at least 3 backend failures are needed along with others all being 404 to result in 500. Before it was 1. - logging improvement Note: this is a temporary solution. The real one is to add replica semantics to zipper backend cluster config
CHANGE: Removed unused graphiteWeb function. Cleaned up limiter that was used only there
CHANGE: Set send_globs to true by default, and mark when otherwise.
CHANGE: Update http handlers for api and zipper to use gorilla/mux
CHANGE: Router: start using middlewares
CHANGE: find: answer with http 422 for requests that are too complex
CHANGE: Changed moving* behavior

BUGFIX: Not found metrics request return HTTP 404
BUGFIX: Fix typo in Prom metric name
BUGFIX: Fix linearRegression index out of range typo
BUGFIX: Fix applyByNode function
BUGFIX: Fix carbonzipper response size calculation
BUGFIX: Fix grace reload usage.
BUGFIX: Fix auto-complete suggestions for groupByNode
BUGFIX: AggregateSeries: update callback function to return (value, isAbsent)
BUGFIX: AggregateSeries: fix case when len(seriesList) == 0
BUGFIX: constantLine: add one more datapoint
BUGFIX: holtWintersAberration: fix index out of range error
BUGFIX: parser: return errors if there are syntax bugs in metric names wrapped by a function

IMPROVEMENT: Added new mode to use memcached.
IMPROVEMENT: Fixed double-counting of requests in case of not-found - not found for find is not considered an error anymore
IMPROVEMENT: Added dockerfiles for carbonapi and zipper
IMPROVEMENT: traces: add two new options: jaegerBufferMaxCount and jaegerBatchMaxCount
IMPROVEMENT: Terminate goroutine on canceled outbound request
IMPROVEMENT: Reanimated expression parser fuzzer
IMPROVEMENT: Multiple Prometheus metrics improvements.
IMPROVEMENT: Added errors merge and exposure in carbonapi. Now we actually fail when everything fails. Relevant unit tests added
IMPROVEMENT: Added sorting when returning json response in api
IMPROVEMENT: Added context cancellations counter to zipper. It counts cancellations of the main request, not the sub-requests
IMPROVEMENT: Broke /render handler in api into smaller pieces
IMPROVEMENT: Code cleanup, vendor cleanup.
IMPROVEMENT: Removed superfluous use of testify lib. The lib can be pruned from dependencies now
IMPROVEMENT: Changed the logic for encoding find responses. Now results with identical expanded text are not duplicated
IMPROVEMENT: Refactored App. Start func into smaller ones
IMPROVEMENT: Removed unused single backend render function in rpc
IMPROVEMENT: Refactored error handling.
IMPROVEMENT: Multiple new unit tests and test improvements in general.
IMPROVEMENT: Improved performance test scripts.
IMPROVEMENT: Removed worker num limitation.
IMPROVEMENT: Add logging for requests with metrics of different step times.
IMPROVEMENT: Allow application/octet-stream to be used as protobuf content type
IMPROVEMENT: Added functional docker-compose
IMPROVEMENT: Renamed carbonzipper.conf to carbonzipper.yaml because it's, well, yaml
IMPROVEMENT: Added tagging of responses by if they are served from cache
IMPROVEMENT: Optimized int to str conversions
IMPROVEMENT: Supported cairo version v1.14.6
IMPROVEMENT: Enable findCache in carbonapi app object
IMPROVEMENT: Add caching to find handler
IMPROVEMENT: Change findHandler to reuse existing resolve globs functionality

Release v0.1.0

30 Jan 10:40
885f227
Compare
Choose a tag to compare

This is the first release of carbonapi from Booking.com. It is the tested version we are running in production. In our setup we use it together with:

Since this is the first release, here are the highlights. Next time it's going to be a changelog.

  • improved overall quality, big refactorings, and code cleanups
  • fixed request timeouts and cancellation
  • better visibility with added metrics and logging
  • now it's possible to block requests by a header

This is a fork from go-graphite/carbonapi. The fork happened on fc3f966816b53f40efe6f2e2a0156f7482c8a934