Notable changes to Apisonator will be tracked in this document.
- storage_async/async_redis: read all responses in pipelines (#302)
- [REVERTED] PR #287 and #290 (#306)
- Ruby 2.7, Redis 5.0.3 (#309)
- Puma 4.3.9 (#315)
- Async-pool 0.3.12 (#324)
- Remove SaaS mode (#325)
- Fixed bug that causes Apisonator to stop pinging Porta to fetch events. This bug triggers very rarely (#292).
- Fixed exception raised when TTL = 0 in
UsagesChecked.mark_all_checked
(#290).
- Introduced performance optimizations around alerts detection (#287).
- New extension that list the keys of an application (#284).
- It is now possible to use OIDC in the auth and authrep endpoints (#280).
- Updated multi-json to 1.15.0 (#278).
- Deleted unused service attributes related with deleted end-users functionality (#277).
- Check if alerts can be raised before calculating utilization (perf optimization) (#275).
- Stop maintaining unused "current_max" key in Alerts (#272).
- Fixed nil exception in
Aggregator.process
(#269).
- Updated to Ruby 2.7 in Docker images (#265) and (#266).
- Updated pry to 0.14.0 and pry-doc to 1.1.0 (#267).
- Updated Docker image to be based on RHEL UBI 8 (#268).
- Removed redundant prometheus config params
(
listener_prometheus_metrics.enabled
andlistener_prometheus_metrics.port
) (#270).
- Updated our Puma fork to v4.3.7 (#261).
- Usages with
#0
(set to 0) no longer generate unnecessary stats keys in Redis (#258).
- Rake task to delete stats keys set to 0 in the DB left there because of this issue (#250).
- Made the worker more reliable when configured in async mode. Now it handles connection errors better (#253), (#254), and (#255).
- Updated async-redis to v0.5.1 (#251).
- Reports of 0 hits no longer generate unnecessary stats keys in Redis (#247).
- New endpoint in the internal API to get the provider key for a given (token, service_id) pair (#243).
- The config file used when running in a Docker image now parses "1" and "true" (case-insensitive) as true (#245).
- Fixed some metrics of the internal API that were not being counted correctly(#244).
- Prometheus metrics for the internal API (#236).
- Docs with a detailed explanation about how counter updates are performed (#239).
- NotifyJobs are run only when the service ID is explicitly defined (#238).
- Fixed corner case that raised "TransactionTimestampNotWithinRange" in notify jobs (#235).
- Updated json gem to v2.3.1 (#232).
- The Prometheus counter of "5xx" errors has been fixed (#230).
- Apisonator no longer supports the native oauth authorization mode. This is a feature that was deprecated a long time ago (#226).
- Fixed a bug introduced in the previous version that made apisonator return an
error when authorizing some requests with the
no_body
option enabled (#224).
- Introduced the
CONFIG_REDIS_MAX_CONNS
andCONFIG_QUEUES_MAX_CONNS
ENVs to configure the max number of Redis connections when using the async mode (#214).
- Perf optimization: loading the usage limits is now done more efficiently.
There is a noticeable improvement in requests with
no_body
enabled for services with many metrics defined (#221). - Updated activesupport to 5.2.4.3 (#217).
- The Prometheus histogram buckets of the workers have been adjusted to be more informative (#208).
- The deprecated endpoints to create, delete, and list oauth tokens have been disabled (#212).
- Now we are using our own redis-rb fork. It includes a fix that should reduce the number of 5xx errors caused by Redis connection errors (#205).
- Updated hiredis to v0.6.3 (#204).
- The behavior of the referrer filters validator is now configurable (#190).
- When running the listeners in async mode, Apisonator no longer returns exception messages to the caller (#186).
- Fixed a small concurrency issue when running the workers in async mode. It only affected to some job run times that appear in the logs (#191).
- Deleted some unused rake tasks for uploading swagger specs (#193).
- Support for specifying transaction timestamps as UNIX epoch timestamps (#167)
- Prometheus metrics for the listener (#174, #178)
- Updated yabeda-prometheus to v0.5.0 (#171)
- Updated async-container to v0.16.4 (#179)
- Stopped propagating unused log attributes unnecessarily (#180)
- No longer sets a default of 1 for
CONFIG_NOTIFICATION_BATCH
in the Dockerfiles (#183)
- The "latest transactions" functionality has been removed. It was no longer needed by Porta (#169)
- No longer crashes when the address of a sentinel cannot be resolved. It tries to connect to another sentinel in the list instead. #158
- Listeners can now be deployed in async mode using Falcon. Still experimental #150
- Added the delete stats task to the
backend-cron
executable #156
- Fixed a minor bug in the stats deletion feature. The task no longer crashes with invalid keys #154
backend-cron
no longer crashes whenRESCHEDULE_JOBS_FREQ
is set #155
- New "flat_usage" extension, useful for caching. #142
- Async params can be configured using environment variables #138
- Rake tasks now work when using the async redis client #137
- Support for non-blocking Redis calls using the redis-async gem. The feature is
opt-in and can be enabled only in workers for now. The feature is enabled with
CONFIG_REDIS_ASYNC=true
#96
- Dropped support for end-users #128
- Perf optimization:
Usage.usage
is more efficient now because it does not create unnecessary instance periods #126
- Perf optimization:
Metric.ascendants
andMetric.descendants
are memoized now #124
- Prometheus metrics for workers #111
- Support for metric hierarchies with more than 2 levels #119, #121, #122
- Updated Nokogiri to v1.10.4 #118
- Dropped support for Ruby < 2.4 #109
- Support for password-protected Redis sentinels #101
- New limit header with the max value for the limit #103
- CI tests now run on Ruby 2.5 and Ruby 2.6 too #84, #97
- The endpoint of the internal API to delete stats of a service has been disabled because of performance issues. It will be re-enabled once those are solved. #87
- Rakefile now accepts a list of files as an argument in the "bench" target #79
- New endpoint in the internal API to delete the users of a service. #38
- Small fixes and improvements in the Makefiles and Dockerfiles used to build the docker images and the dev environment. #61, #64, #67, #68, #69.
- Tasks to check redis storage and queue storage connection. #58
- Updated rubyzip to version 1.2.2 due to CVE-2018-1000544. #57
- The Limit Headers now show the correct information when the request is rate-limited. #55
- Add documentation about utilization alerts. #43
- Set sentinel default port when no port is provided in Redis sentinel configuration. #46
- When a Service is deleted delete all of its errors. #44
- When a Service is deleted all its transactions are deleted. #45
- Allow deletion of default service when it is the only existing one. #51
- Fix apisonator docker commands order in README. #49
- Allow defining Resque configuration without sentinels and defining non-localhost Resque configuration for development and test environments. #41
- Fix existing Services prior the 2.87.0 release not being set as active by default #39
- Services now can be active (default) or inactive. Calls on inactive services always fail, with authorizations being denied. (#34)
- Small cleaups and refactor of transactor code. (#26)
- Allow multiple job schedulers to be executed in parallel with multiple Resque Redis servers. (#29)
- Revamp README.md so that it is more oriented to usage and extract dev instructions to DEVELOPMENT.md. (#33)
- Fix a race condition in a spec that tests a race condition. (#32)
- Updated Sinatra to version 2.0.3 due to CVE-2018-11627. (#30)
- Updated Nokogiri to version 1.8.3 due to multiple libxml2 CVEs including CVE-2017-18258. This library is only used in the test suite. (#28, #37)
- The metrics used for reporting transactions and authorizations to the master
account are now configurable under
master.metrics.transactions
andmaster.metrics.transactions_authorize
. (#15) - There is now a set of rake targets for selectively run tests and specs by type (ie. integration, unit, etc) and by specific file. (#11)
- The
make dev
command supports specifying an env variablePORT
to expose the listener in that port on the local machine. (#8) - Minor miscellaneous improvements. (#7, #9, #12, #16, #17, #20, #23, #24)
- Added extra measures to avoid creating applications through the internal API without mandatory attributes. (#13)
- Some error conditions that produced empty or incorrect responses now behave like other errors and output XML bodies. (#14, #19)
- Running make in systems with a non-GNU version of
time
should stop failing because of using options supported only by GNU time. (#5) - Fixed a bug that made extra requests for stats with the inexistent
seconds
period. (#21) - Fixed a bug in dealing with the
notification_batch
configuration that made Apisonator enqueue NotifyJobs continuously when the setting was left unspecified. (#22)
- Support for specifying Redis Sentinel roles in the configuration file. This
finished support for Redis HA through Sentinels. Use settings
config.redis.role
andconfig.queues.role
to specify either:master
or:slave
if you are using the Sentinel support. - Set up the CI for the project in CircleCI with multiple Ruby versions.
make dev
will create a container for you to work in Apisonator sync'ing the contents with the repository.make test
will optionally build the CI image from scratch.