Skip to content

Latest commit

 

History

History
363 lines (208 loc) · 22.3 KB

CHANGELOG.md

File metadata and controls

363 lines (208 loc) · 22.3 KB

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.8.1 (2024-09-10)

Bug Fixes

  • Mark the reporter thread as "fork safe" to avoid warnings (#215) (bf92a59), closes #170

1.8.0 (2024-07-09)

Features

1.7.1 (2024-07-08)

Bug Fixes

  • Lock GoodJob dependency to < 4.0 (#211) (d558584)
  • Fix Rack version to work across multiple released versions (dd0c08c)

1.7.0 (2024-05-03)

Features

1.6.0 (2024-04-26)

Features

Bug Fixes

  • Always send reports, even with no metrics (e40e43f)
  • GoodJob dependency on Rails Autoscale version of the gem (#198) (adccecc)

1.5.4 (2024-02-07)

Bug Fixes

  • Fix deprecation warning in Sidekiq 7.2 (9e22147), closes #195

1.5.3 (2024-01-25)

Bug Fixes

  • Don't include "enabled" metadata with adapters (#193) (ff6a560)
  • Fix console detection and improve rake detection (#192) (d6ae321)
  • Gracefully fail when JUDOSCALE_URL is a blank string (ca565d3)
  • Use the configured log level even if the logger has already been initialized (#190) (7908eb2)

Performance Improvements

  • Skip reporting if there are no metrics (#191) (0835f53)

1.5.2 (2023-08-10)

Bug Fixes

  • Properly handle GoodJob configured with a non-primary database (#182) (ed0c6f4)

1.5.1 (2023-08-09)

Bug Fixes

  • Don't start the reporter in build processes (#180) (0cc3b57)

1.5.0 (2023-07-17)

Features

Bug Fixes

  • Fail silently when DB or table is missing (#175) (4e1cab6)

1.4.1 (2023-05-04)

Bug Fixes

  • Don't start the reporter in a Rails console (#172) (c75770e)

1.4.0 (2023-04-19)

Features

  • 🤖✨ Add Render platform support (#142) (81f283e)
  • Handle request-start header in microseconds and nanoseconds (#157) (6c91e1d)

1.3.1 (2023-03-11)

Bug Fixes

  • Gracefully handle several types of transient TCP errors (bbe4813)

1.3.0 (2023-02-09)

Features

Bug Fixes

  • Correctly interpret x-request-start header when measured in nanoseconds (#64) (38276ce)

1.2.3 (2022-11-26)

Bug Fixes

  • Add default required files when using rails-autoscale-* gems (#90) (64c5b69)

1.2.2 (2022-11-26) YANKED

Bug Fixes

  • Fix rails-autoscale-* gem dependencies (#88) (25132da), closes #87

1.2.1 (2022-11-23) YANKED

Bug Fixes

1.2.0 (2022-11-23) YANKED

Features

  • Rename folders, files, and constants from Rails Autoscale to Judoscale (#79) (061636e)

1.1.1 (2022-11-14)

Bug Fixes

  • Fix "busy jobs" metric for Sidekiq 7 (#75) (aa609af)

1.1.0 (2022-10-10)

Features

  • Add judoscale-rack gem for Rack apps (non-Rails) (66cb51d)

Bug Fixes

  • Fix logger when using Log4r (1c9d726)

1.0.3 (2022-10-01)

Bug Fixes

  • Fix find & replace mistake for queue time header (a19982d)

1.0.2 (2022-09-26)

Bug Fixes

  • Bring back support for legacy env var configs (RAILS_AUTOSCALE_MAX_QUEUES and RAILS_AUTOSCALE_LONG_JOBS) (c508544)

1.0.1 (2022-09-14)

Bug Fixes

  • Gracefully handle TCP connection timeouts (a34797b)
  • Update API endpoint to V3.
  • Make judoscale-ruby work with either Judoscale or Rails Autoscale
    • Judoscale.configure and RailsAutoscale.configure are both supported.
    • RAILS_AUTOSCALE_URL and JUDOSCALE_URL env vars are both supported.
  • Backport all changes from judoscale-ruby to rails-autoscale-gems.
  • Refactor how the config is exposed and accessed from job adapters / collectors to simplify and remove some indirection. (#99)
  • Add busy job tracking support for Que: (#97)
  • Add queue latency support to Resque via an extension, since it doesn't support it natively. (#100)
  • Add busy job tracking support for Resque: (#92)
  • Enforce and test against supported versions officially across all job adapters:
    • Sidekiq: 5, 6
    • Resque: 2
    • Que: 1
    • DJ: 4
  • Prevent Que adapter from collecting metrics of jobs locked for execution. Original issue reference (#85)
  • Remove the collection of a "default" queue across all job adapters. (#84)
  • Make logging more consistent if it has been configured: (#60)
    • Without a configured log level, we'll just let the underlying logger (e.g. Rails.logger in the context of Rails) handle it.
    • With a configured log level, we:
      • skip if that level doesn't allow logging. (e.g. configured to INFO skips DEBUG logs by default)
      • let the underlying logger handle it if it allows the log level. (e.g. configured to INFO and logger has level INFO or DEBUG)
      • prefix our level to the message and use the underlying logger level if it doesn't allow ours, to ensure messages are logged. (e.g. configured to DEBUG and logger has level INFO, which wouldn't allow DEBUG messages)
  • Add sample apps:
    • judoscale-rails (#41)
    • judoscale-sidekiq (#56)
    • judoscale-resque (#74)
    • judoscale-delayed_job (#75)
    • judoscale-que (#76)
  • Split into multiple libraries/adapters: (including several internal refactorings & renamings to the core code to enable better separation and registration of the different libraries/adapters)
    • judoscale-ruby is the base Ruby library containing the core implementation used by all other libraries, and is responsible for running the metrics collection and reporting to Judoscale. (#47)
    • judoscale-rails integrates with Rails to initialize the reporter on app boot to send metrics to Judoscale, and register a middleware to collect web request metrics for reporting. (#47)
    • judoscale-sidekiq integrates with Sidekiq to collect queue metrics. (#52)
    • judoscale-resque integrates with Resque to collect queue metrics. (#61)
    • judoscale-delayed_job integrates with Delayed Job to collect queue metrics. (#64)
    • judoscale-que integrates with Que to collect queue metrics.(#65)
  • Tests no longer use VCR, requiring only Webmock. (#53)
  • Include contextual metadata with each report, remove the registration API when starting the reporter. (#50)
  • Report metrics using a JSON payload instead of CSV + query params. (#42)
  • Drop worker_adapters config list in favor of setting it for each individual adapter <adapter>.enabled = true|false. This allows to manually disable reporting for any automatically enabled adapter. (#38)
  • Combine debug and quiet config options into a single log_level which controls how our logging should behave. (#37)
  • Rename some configs: <adapter>.track_long_running_jobs => <adapter>.track_busy_jobs, report_interval => report_interval_seconds, max_request_size => max_request_size_bytes. (#36)
  • Silence queries from DelayedJob and Que adapters when collecting metrics. (#35)
  • Allow configuring a list of queues to collect metrics from. Any queues not in that list will be excluded, and queue_filter is not applied. Please note that max_queues still applies. (#33)
  • Adapter config max_queues to report is now 20 by default (previously 50), and will report up to that number of queues (sorted by queue name length) instead of skipping all the reporting once that threshold is crossed. (#31)
  • Allow configuring a custom proc to filter queues to collect metrics from by name: queue_filter = ->(queue_name) { /custom/.match?(queue_name) }. By default it will filter out queues matching UUIDs. (#30)
  • Allow per-adapter configuration of max_queues and track_long_running_jobs, dropping support for the global configurations. (#29)
  • Drop support for ENV vars RAILS_AUTOSCALE_WORKER_ADAPTER, RAILS_AUTOSCALE_LONG_JOBS, and RAILS_AUTOSCALE_MAX_QUEUES, in favor of using the new block config format. (#26)
  • Configure Judoscale through a block: Judoscale.configure { |config| config.logger = MyLogger.new }. (#25)
  • Remove legacy configs: sidekiq_latency_for_active_jobs, latency_for_active_jobs. (#22)
  • Collect a new metric: network time, and expose it to the app via rack env with judoscale.network_time. This is currently only available with Puma, and represents the time Puma spent waiting for the request body. (#20)
  • Change the queue_time rack env value exposed to the app to Judoscale.queue_time. (#18)
  • Drop dev mode. (#16)
  • Remove error reporting via the API, log exceptions with full backtraces. (that are more easily searchable now.) (#13)
  • Move test suite to minitest/spec. (#8)
  • Apply StandardRB to the code. (#5)
  • Require Ruby 2.6 or newer. (#4)
  • Move the build to GitHub Actions. (#2)

Added

  • Add RAILS_AUTOSCALE_MAX_QUEUES config option. (28738a5)

0.10.2 - 2021-01-12

Changed

  • Loosen Ruby constraint to allow Ruby 3. (#36)

0.10.1 - 2021-01-03

Added

  • Add support for long-running jobs in Sidekiq and Delayed Job.
  • Handle x-request-start measured in seconds (instead of milliseconds) to support nginx buildpack (cd092f3)
  • Override worker adapter config via env var (75dd06b)

Changed

  • Require Ruby 2.5 or newer. (b033050)
  • Only report worker metrics from web.1 to avoid redundant data. (d5d5fa8)
  • Don't collect worker metrics for an unreasonable number of queues. (a9358af)

Fixed

  • Avoid holding onto database connections (DJ & Que only). (3919ca5)
  • Better error handling for worker adapters. (190786e)
  • Don't collect metrics of the reporter isn't running. Avoids memory bloat. (247c322)

0.10.0 - 2021-01-03 [YANKED]

I released the wrong branch 🤦‍♂️

0.9.1 - 2020-07-29

Fixed

  • Fix a bug in error handling. (3018542)
  • Remove unintentional Rails dependency.

0.9.0 - 2020-07-12

Added

  • Add support for Resque workers.
  • Add dev mode for working on the agent gem itself. (47e3fca)
  • Report agent exceptions to Judoscale.

Changed

  • Adjust queue time metric to exclude time waiting for large request bodies. (#25)
  • Que and DJ jobs without a queue name will be included in the "default" queue metrics.

Fixed

  • Multiple fixes to the Delayed Job SQL query.

0.8.3 - 2020-05-26

Fixed

  • Ignored failed job in Delayed Job adapter. (fa72fc2)

0.8.2 - 2020-05-22

Fixed

  • Ignore worker metrics from unnamed queues (DJ & Que only). These metrics were being lumped with web metrics. (#21)

0.8.1 - 2020-05-04

Fixed

  • Ignore failed jobs in Que adapter. (#18)

0.8.0 - 2020-03-21

Added

  • Add support for Delayed Job (#14)
  • Add support for Que (#15)

0.7.0 - 2019-12-04

Added

  • Make worker adapters configurable. (012d937)

0.6.3 - 2019-06-25

Fixed

  • Fix issues with logging.

0.6.2 - 2019-06-22

Fixed

  • Fix issues with logging.

0.6.1 - 2019-05-06

Fixed

  • Don't assume Sidekiq is present.

0.6.0 - 2019-05-03

Added

  • Add support for autoscaling Sidekiq.