Fix error within error when limiting backtrace to 3 lines (#13120)
Fix #13086, close #13113
This commit is contained in:
		| @@ -73,8 +73,6 @@ class Request | |||||||
|       response.body_with_limit if http_client.persistent? |       response.body_with_limit if http_client.persistent? | ||||||
|  |  | ||||||
|       yield response if block_given? |       yield response if block_given? | ||||||
|     rescue => e |  | ||||||
|       raise e.class, e.message, e.backtrace[0] |  | ||||||
|     ensure |     ensure | ||||||
|       http_client.close unless http_client.persistent? |       http_client.close unless http_client.persistent? | ||||||
|     end |     end | ||||||
|   | |||||||
| @@ -1,13 +1,24 @@ | |||||||
| # frozen_string_literal: true | # frozen_string_literal: true | ||||||
|  |  | ||||||
| class SidekiqErrorHandler | class SidekiqErrorHandler | ||||||
|  |   BACKTRACE_LIMIT = 3 | ||||||
|  |  | ||||||
|   def call(*) |   def call(*) | ||||||
|     yield |     yield | ||||||
|   rescue Mastodon::HostValidationError |   rescue Mastodon::HostValidationError | ||||||
|     # Do not retry |     # Do not retry | ||||||
|  |   rescue => e | ||||||
|  |     limit_backtrace_and_raise(e) | ||||||
|   ensure |   ensure | ||||||
|     socket = Thread.current[:statsd_socket] |     socket = Thread.current[:statsd_socket] | ||||||
|     socket&.close |     socket&.close | ||||||
|     Thread.current[:statsd_socket] = nil |     Thread.current[:statsd_socket] = nil | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   private | ||||||
|  |  | ||||||
|  |   def limit_backtrace_and_raise(e) | ||||||
|  |     e.set_backtrace(e.backtrace.first(BACKTRACE_LIMIT)) | ||||||
|  |     raise e | ||||||
|  |   end | ||||||
| end | end | ||||||
|   | |||||||
| @@ -52,13 +52,9 @@ class ActivityPub::DeliveryWorker | |||||||
|       end |       end | ||||||
|     end |     end | ||||||
|  |  | ||||||
|     begin |     light.with_threshold(STOPLIGHT_FAILURE_THRESHOLD) | ||||||
|       light.with_threshold(STOPLIGHT_FAILURE_THRESHOLD) |          .with_cool_off_time(STOPLIGHT_COOLDOWN) | ||||||
|            .with_cool_off_time(STOPLIGHT_COOLDOWN) |          .run | ||||||
|            .run |  | ||||||
|     rescue Stoplight::Error::RedLight => e |  | ||||||
|       raise e.class, e.message, e.backtrace.first(3) |  | ||||||
|     end |  | ||||||
|   end |   end | ||||||
|  |  | ||||||
|   def failure_tracker |   def failure_tracker | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user