diff --git a/Changes.md b/Changes.md index 6dcf082d..473a03b4 100644 --- a/Changes.md +++ b/Changes.md @@ -1,3 +1,8 @@ +HEAD +----------- + +- Safer display of job data in Web UI [#2405] + 3.4.1 ----------- diff --git a/lib/sidekiq/web_helpers.rb b/lib/sidekiq/web_helpers.rb index 6b0adca4..a5437bbe 100644 --- a/lib/sidekiq/web_helpers.rb +++ b/lib/sidekiq/web_helpers.rb @@ -169,11 +169,22 @@ module Sidekiq def display_args(args, truncate_after_chars = 2000) args.map do |arg| - a = arg.inspect - h(truncate(a)) + h(truncate(to_display(arg))) end.join(", ") end + def to_display(arg) + begin + arg.inspect + rescue + begin + arg.to_s + rescue => ex + "Cannot display argument: [#{ex.class.name}] #{ex.message}" + end + end + end + RETRY_JOB_KEYS = Set.new(%w( queue class args retry_count retried_at failed_at jid error_message error_class backtrace