Changelog

Improving AppSignal, one deploy at a time.

Sep 13, 2024

Fix ThreadError when Puma shuts down in clustered mode

Ruby4.0.8

Fixed

  • Fix a ThreadError from being raised on process exit when Appsignal.stop is called from a Signal.trap block, like when Puma shuts down in clustered mode.

View the Ruby gem v4.0.8 changelog for more information.

Sep 12, 2024

Allow reporting `ErrorEvent` instances

JavaScript@appsignal/javascript@1.3.31

Added

  • Allow ErrorEvent instances to be reported to AppSignal.

View the @appsignal/javascript v1.3.31 changelog for more information.

Sep 12, 2024

Smaller package and formatted Date and Time objects

Ruby4.0.7

Changed

  • Format the Date and Time objects in a human-friendly way. Previously, dates and times stored in sample data, like session data, would be shown as #<Date> and #<Time>. Now they will show as #<Date: 2024-09-11> and #<Time: 2024-09-12T13:14:15+02:00> (UTC offset may be different for your time objects depending on the server setting).

Removed

  • Do not include support files in the published versions. This reduces the gem package size.

View the Ruby gem v4.0.7 changelog for more information.

Sep 03, 2024

Bugfixes

Fixed

  • Fix bug that caused the page to refresh when opening the date picker on the logs page.
Sep 03, 2024

Support Que 2 keyword arguments

Ruby4.0.6

Added

  • Add support for Que 2 keyword arguments. Que job arguments will now be reported as the arguments key for positional arguments and keyword_arguments for Ruby keyword arguments.

View the Ruby gem v4.0.6 changelog for more information.

Sep 02, 2024

Elixir for Phoenix package v2.5.0

Elixirphoenix 2.5.0

Added

  • Record request information as metadata like the request path, request method and response status.

View the Elixir for Phoenix package v2.5.0 changelog for more information.

Sep 02, 2024

Report more Puma errors

Ruby4.0.5

Added

  • Report Puma low-level errors using the lowlevel_error reporter. This will report errors previously not caught by our instrumentation middleware.

Changed

  • Log a warning when loader defaults are added after AppSignal has already been configured.

    ruby
    # Bad Appsignal.configure # or Appsignal.start Appsignal.load(:sinatra) # Good Appsignal.load(:sinatra) Appsignal.configure # or Appsignal.start
  • Rename the path and method transaction metadata to request_path and request_method to make it more clear what context this metadata is from. The path and method metadata will continue to be reported until the next major/minor version.

  • Internal change to how OpenTelemetry metrics are sent.

Removed

  • Drop support for Puma version 2 and lower.

Fixed

  • Fix the error log message about our at_exit hook reporting no error on process exit when the process exits without an error.

View the Ruby gem v4.0.5 changelog for more information.

Aug 29, 2024

Ignore SignalException and Rack instrumentation fixes

Ruby4.0.4

Changed

  • Send check-ins concurrently. When calling Appsignal::CheckIn.cron, instead of blocking the current thread while the check-in events are sent, schedule them to be sent in a separate thread.

    When shutting down your application manually, call Appsignal.stop to block until all scheduled check-ins have been sent.

Fixed

  • Make our Rack BodyWrapper behave like a Rack BodyProxy. If a method doesn't exist on our BodyWrapper class, but it does exist on the body, behave like the Rack BodyProxy and call the method on the wrapped body.
  • Do not report SignalException errors from our at_exit error reporter.

View the Ruby gem v4.0.4 changelog for more information.

Aug 26, 2024

Fix Ecto transactions in parallel preloads

Elixir2.12.3

Fixed

  • Make Appsignal.Ecto.Repo's default_options/1 function overridable. If your Ecto repo uses Appsignal.Ecto.Repo and implements its own default_options/1, it must call super to merge its default options with those of Appsignal.Ecto.Repo:

    elixir
    defmodule MyEctoRepo use Appsignal.Ecto.Repo def default_options(operation) do super(operation) ++ [ # ... your default options here ... ] end end
  • Fix an issue where Ecto transactions in parallel preloads would not be instrumented correctly when using Appsignal.Ecto.Repo, causing the query in the Ecto transaction to not be instrumented and the sample to be incorrectly closed as an earlier time.

View the Elixir package v2.12.3 changelog for more information.

Aug 26, 2024

Ignore more internal Sidekiq errors

Ruby4.0.3

Changed

  • Do not report Sidekiq Sidekiq::JobRetry::Handled and Sidekiq::JobRetry::Skip errors. These errors would be reported by our Rails error subscriber. These are an internal Sidekiq errors we do not need to report.

Removed

  • Remove the app_path writer in the Appsignal.configure helper. This was deprecated in version 3.x. It is removed now in the next major version.

    Use the root_path keyword argument in the Appsignal.configure helper (Appsignal.configure(:root_path => "...")) to change the AppSignal root path if necessary.

View the Ruby gem v4.0.3 changelog for more information.

Aug 23, 2024

Fix name sorting bug in performance time detective modal

Fixed

Fixed the name column sorting bug in the performance time detective modal.

Aug 23, 2024

Python package v1.3.10

Python1.3.10

Changed

  • Simplify the implementation of set_gauge in favor of the newer OpenTelemetry's sync implementation.

View the Python package v1.3.10 changelog for more information.

Aug 23, 2024

Don't report broken pipe errors from webservers

Ruby3.13.1

Changed

  • Ignore Errno::EPIPE errors when instrumenting response bodies. We've noticed this error gets reported when the connection is broken between server and client. This happens in normal scenarios so we'll ignore this error in this scenario to avoid error reports from errors that cannot be resolved.

View the Ruby gem v3.13.1 changelog for more information.

Aug 23, 2024

AppSignal for Ruby Version 4.0

Ruby4.0.0

We've released version 4.0 of the AppSignal gem! Read all about it in the Ruby gem 4.0 blog post.

When upgrading, follow our guide for upgrading from Ruby gem 3 to 4.

Added

  • Add an at_exit callback error reporter. By default, AppSignal will now report any unhandled errors that crash the process as long as Appsignal started beforehand.

    ruby
    require "appsignal" Appsignal.start raise "oh no!" # Will report the error StandardError "oh no!"

    To disable this behavior, set the enable_at_exit_reporter config option to false.

  • Report errors from Rails runners. When a Rails runner reports an unhandled error, it will now report the error in the "runner" namespace.

  • Support adding multiple errors to a transaction.

    Using the Appsignal.report_error helper, you can now report more than one error within the same transaction context, up to a maximum of ten errors per transaction. Each error will be reported as a separate sample in the AppSignal UI.

    Before this change, using Appsignal.report_error or Appsignal.set_error helpers, adding a new error within the same transaction would overwrite the previous one.

  • Add a helper for parameters sample data to be unset. This is a private method until we stabilize it.

Changed

  • Change the default Rake task namespace to "rake". Previously, Rake tasks were reported in the "background" namespace.

  • Do not start AppSignal when the config file raises an error. Previously, the file source would be ignored.

  • Freeze the config after AppSignal has started. Prevent the config from being modified after AppSignal has started to avoid the expectation that modifying the config after starting AppSignal has any effect.

  • Do not start Appsignal multiple times if Appsignal.start is called more than once. The configuration can no longer be modified after AppSignal has started.

  • The transaction sample data is now merged by default. Previously, the sample data (except for tags) would be overwritten when a sample data helper was called.

    ruby
    # Old behavior Appsignal.set_params("param1" => "value") Appsignal.set_params("param2" => "value") # The parameters are: # { "param2" => "value" } # New behavior Appsignal.add_params("param1" => "value") Appsignal.add_params("param2" => "value") # The parameters are: # { "param1" => "value", "param2" => "value" }

    New helpers have been added:

    • Appsignal.add_tags
    • Appsignal.add_params
    • Appsignal.add_session_data
    • Appsignal.add_headers
    • Appsignal.add_custom_data

    The old named helpers that start with set_ will still work. They will also use the new merging behavior.

  • Set the Rails config defaults for Appsignal.configure when used in a Rails initializer. Now when using Appsignal.configure in a Rails initializer, the Rails env and root path are set on the AppSignal config as default values and do not need to be manually set.

  • Global transaction metadata helpers now work inside the Appsignal.report_error and Appsignal.send_error callbacks. The transaction yield parameter will continue to work, but we recommend using the global Appsignal.set_* and Appsignal.add_* helpers.

    ruby
    # Before Appsignal.report_error(error) do |transaction| transaction.set_namespace("my namespace") transaction.set_action("my action") transaction.add_tags(:tag_a => "value", :tag_b => "value") # etc. end Appsignal.send_error(error) do |transaction| transaction.set_namespace("my namespace") transaction.set_action("my action") transaction.add_tags(:tag_a => "value", :tag_b => "value") # etc. end # After Appsignal.report_error(error) do Appsignal.set_namespace("my namespace") Appsignal.set_action("my action") Appsignal.add_tags(:tag_a => "value", :tag_b => "value") # etc. end Appsignal.send_error(error) do Appsignal.set_namespace("my namespace") Appsignal.set_action("my action") Appsignal.add_tags(:tag_a => "value", :tag_b => "value") # etc. end
  • Include the Rails app config in diagnose report. If AppSignal is configured in a Rails initializer, this config is now included in the diagnose report.

  • Include the config options from the loaders config defaults and the Appsignal.configure helper in diagnose report. The sources for config option values will include the loaders and Appsignal.configure helper in the output and the JSON report sent to our severs, when opted-in.

  • Calculate error rate by transactions with an error, not the number of errors on a transaction. This limits the error rate to a maximum of 100%.

Removed

  • Remove all deprecated components. Please follow our Ruby gem 4 upgrade guide when upgrading to this version to avoid any errors from calling removed components, methods and helpers.
  • Remove the Appsignal.listen_for_error helper. Use manual exception handling using rescue => error with the Appsignal.report_error helper instead.
  • Remove (private) Appsignal::Transaction::FRONTEND constant. This was previously used for the built-in front-end integration, but this has been absent since version 3 of the Ruby gem.
  • Remove the Appsignal.config= writer. Use the Appsignal.configure helper to configure AppSignal.
  • Remove the Transaction.new method Transaction ID argument. The Transaction ID will always be automatically generated.

Fixed

  • Fix an issue where, when setting several errors for the same transaction, error causes from a different error would be shown for an error that has no causes.

View the Ruby gem v4.0.0 changelog for more information.

Aug 23, 2024

Ignore internal exceptions from Ruby and Sidekiq

Ruby4.0.1

Fixed

  • Do not report Sidekiq::JobRetry::Skip errors. These errors would be reported by our Rails error subscriber. This is an internal Sidekiq error we do not need to report.
  • Do not report SystemExit errors from our at_exit error reporter.

View the Ruby gem v4.0.1 changelog for more information.

Aug 23, 2024

Fix for Rails session data

Ruby4.0.2

Fixed

  • Do not log a warning for nil data being added as sample data, but silently ignore it because we don't support it.
  • Fix Rails session data not being reported.

View the Ruby gem v4.0.2 changelog for more information.

Aug 22, 2024

Fix Phoenix integration not reporting all requests

Elixirphoenix 2.4.1

Fixed

  • Set request metadata in :router_dispatch events to support Phoenix apps that don't fire :endpoint events.

View the Elixir for Phoenix package v2.4.1 changelog for more information.

Aug 19, 2024

Python package v1.3.9

Python1.3.9

Added

  • Add helper to manually stop the agent process for this AppSignal instance.

    Some contexts, like serverless functions, exit before AppSignal can ensure all data is sent to our servers. To ensure the data is sent, the new appsignal.stop() method can be called to gracefully stop the AppSignal agent process.

View the Python package v1.3.9 changelog for more information.

Aug 16, 2024

Improved Go installation instructions

Added

We’ve added new installation instructions for Go to provide better step-by-step instructions for the installation process.

Aug 14, 2024

Rename heartbeats to cron check-ins

Elixir2.12.2

Changed

  • Rename heartbeats to cron check-ins. Calls to Appsignal.heartbeat and Appsignal.Heartbeat should be replaced with calls to Appsignal.CheckIn.cron and Appsignal.CheckIn.Cron, for example:

    elixir
    # Before Appsignal.heartbeat("do_something", fn -> do_something() end) # After Appsignal.CheckIn.cron("do_something", fn -> do_something end)

Deprecated

  • Calls to Appsignal.heartbeat and to methods in Appsignal.Heartbeat will emit a deprecation warning at compile-time.

View the Elixir package v2.12.2 changelog for more information.

Start your free trial

Don’t let the bad bugs bite. Try AppSignal for free.

AppSignal offers a 30-day free trial, no credit card is required. All features are available in all plans. Start monitoring your application in just a few clicks!