The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.8.1 (2024-09-10)
1.8.0 (2024-07-09)
1.7.1 (2024-07-08)
- Lock GoodJob dependency to < 4.0 (#211) (d558584)
- Fix Rack version to work across multiple released versions (dd0c08c)
1.7.0 (2024-05-03)
1.6.0 (2024-04-26)
- 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)
1.5.3 (2024-01-25)
- 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)
1.5.2 (2023-08-10)
1.5.1 (2023-08-09)
1.5.0 (2023-07-17)
1.4.1 (2023-05-04)
1.4.0 (2023-04-19)
- 🤖✨ Add Render platform support (#142) (81f283e)
- Handle request-start header in microseconds and nanoseconds (#157) (6c91e1d)
1.3.1 (2023-03-11)
- Gracefully handle several types of transient TCP errors (bbe4813)
1.3.0 (2023-02-09)
1.2.3 (2022-11-26)
1.2.2 (2022-11-26) YANKED
1.2.1 (2022-11-23) YANKED
1.2.0 (2022-11-23) YANKED
1.1.1 (2022-11-14)
1.1.0 (2022-10-10)
- Add judoscale-rack gem for Rack apps (non-Rails) (66cb51d)
- Fix logger when using Log4r (1c9d726)
1.0.3 (2022-10-01)
- Fix find & replace mistake for queue time header (a19982d)
1.0.2 (2022-09-26)
- Bring back support for legacy env var configs (RAILS_AUTOSCALE_MAX_QUEUES and RAILS_AUTOSCALE_LONG_JOBS) (c508544)
1.0.1 (2022-09-14)
- Gracefully handle TCP connection timeouts (a34797b)
- Update API endpoint to V3.
- Make judoscale-ruby work with either Judoscale or Rails Autoscale
Judoscale.configure
andRailsAutoscale.configure
are both supported.RAILS_AUTOSCALE_URL
andJUDOSCALE_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)
- Without a configured log level, we'll just let the underlying logger (e.g.
- Add sample apps:
- 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
andquiet
config options into a singlelog_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, andqueue_filter
is not applied. Please note thatmax_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
andtrack_long_running_jobs
, dropping support for the global configurations. (#29) - Drop support for ENV vars
RAILS_AUTOSCALE_WORKER_ADAPTER
,RAILS_AUTOSCALE_LONG_JOBS
, andRAILS_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 toJudoscale.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)
- Add
RAILS_AUTOSCALE_MAX_QUEUES
config option. (28738a5)
0.10.2 - 2021-01-12
- Loosen Ruby constraint to allow Ruby 3. (#36)
0.10.1 - 2021-01-03
- 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)
- 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)
- 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
- Fix a bug in error handling. (3018542)
- Remove unintentional Rails dependency.
0.9.0 - 2020-07-12
- Add support for Resque workers.
- Add dev mode for working on the agent gem itself. (47e3fca)
- Report agent exceptions to Judoscale.
- 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.
- Multiple fixes to the Delayed Job SQL query.
0.8.3 - 2020-05-26
- Ignored failed job in Delayed Job adapter. (fa72fc2)
0.8.2 - 2020-05-22
- Ignore worker metrics from unnamed queues (DJ & Que only). These metrics were being lumped with web metrics. (#21)
0.8.1 - 2020-05-04
- Ignore failed jobs in Que adapter. (#18)
0.8.0 - 2020-03-21
0.7.0 - 2019-12-04
- Make worker adapters configurable. (012d937)
0.6.3 - 2019-06-25
- Fix issues with logging.
0.6.2 - 2019-06-22
- Fix issues with logging.
0.6.1 - 2019-05-06
- Don't assume Sidekiq is present.
0.6.0 - 2019-05-03
- Add support for autoscaling Sidekiq.