Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: OpenSSL::SSL::SSLError (MAYBE-MARKETING-3S) #269

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

revise-dev[bot]
Copy link
Contributor

@revise-dev revise-dev bot commented Feb 19, 2025

The SSL error (OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading) occurring in the StatisticsController is likely due to improper header handling in the Faraday request. The original code was passing headers as a third argument to Faraday.get, which can sometimes lead to improper request formatting and SSL handshake issues.

The fix involves two key changes:

  1. Removing the separate headers hash declaration and instead setting headers directly within a request block. This ensures headers are properly attached to the request object before it's sent, preventing malformed requests that can cause SSL errors.

  2. Using Faraday's block syntax for setting headers, which is more reliable and consistent with how the application handles similar requests in other parts of the codebase (like in the data.rake task). This approach ensures headers are properly encoded and attached to the request.

The original intent of the code was to make an authenticated API request to Synth Finance with proper identification headers. The modified version maintains this functionality but implements it in a more robust way that prevents SSL handshake failures.

Additionally, this change:

  • Maintains the same header values and authentication approach
  • Preserves the caching logic and data processing
  • Keeps the same error handling pattern
  • Retains the same response parsing logic

This modification follows Ruby best practices for making HTTP requests and aligns with Faraday's recommended approach for header handling.

Error Details

Summary:

OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading (OpenSSL::SSL::SSLError)

Stacktrace:

openssl/buffering.rb:217
openssl/buffering.rb:217
net/protocol.rb:218
net/protocol.rb:199
net/protocol.rb:209
net/http/response.rb:158
net/http/response.rb:147
net/http.rb:2420
net/http.rb:2411
net/http.rb:2411
net/http.rb:2384
sentry/net/http.rb:44
sentry/hub.rb:115
sentry/span.rb:237
sentry/hub.rb:113
sentry-ruby.rb:507
sentry/net/http.rb:37
faraday/adapter/net_http.rb:113
net/http.rb:1632
faraday/adapter/net_http.rb:112
faraday/adapter/net_http.rb:102
faraday/adapter/net_http.rb:66
faraday/adapter.rb:45
faraday/adapter/net_http.rb:65
faraday/request/url_encoded.rb:25
faraday/rack_builder.rb:152
faraday/connection.rb:452
faraday/connection.rb:200
faraday.rb:145
app/controllers/stocks/statistics_controller.rb:25
active_support/cache.rb:1057
active_support/cache.rb:1027
active_support/notifications.rb:210
active_support/notifications/instrumenter.rb:58
sentry/rails/tracing.rb:56
active_support/notifications.rb:210
active_support/cache.rb:1026
active_support/cache.rb:1003
active_support/cache.rb:1056
active_support/cache.rb:473
app/controllers/stocks/statistics_controller.rb:17
action_controller/metal/basic_implicit_render.rb:8
abstract_controller/base.rb:226
action_controller/metal/rendering.rb:193
abstract_controller/callbacks.rb:261
active_support/callbacks.rb:120
turbo-rails.rb:24
/home/deploy/maybe-marketing-prod/shared/bundle/ruby/3.4.0/gems/turbo-rails-2.0.11/app/controllers/concerns/turbo/request_id_tracking.rb:10
active_support/callbacks.rb:129
action_text/rendering.rb:25
action_text/engine.rb:71
active_support/callbacks.rb:129
active_support/callbacks.rb:129
sentry/rails/controller_transaction.rb:21
sentry/hub.rb:115
sentry/span.rb:237
sentry/hub.rb:113
sentry-ruby.rb:507
sentry/rails/controller_transaction.rb:18
active_support/callbacks.rb:129
active_support/callbacks.rb:140
abstract_controller/callbacks.rb:260
action_controller/metal/rescue.rb:27
action_controller/metal/instrumentation.rb:76
active_support/notifications.rb:210
active_support/notifications/instrumenter.rb:58
sentry/rails/tracing.rb:56
active_support/notifications.rb:210
action_controller/metal/instrumentation.rb:75
action_controller/metal/params_wrapper.rb:259
active_record/railties/controller_runtime.rb:39
abstract_controller/base.rb:163
action_view/rendering.rb:40
action_controller/metal.rb:252
action_controller/metal.rb:335
action_dispatch/routing/route_set.rb:67
action_dispatch/routing/route_set.rb:50
action_dispatch/journey/router.rb:53
action_dispatch/journey/router.rb:133
action_dispatch/journey/router.rb:126
action_dispatch/journey/router.rb:126
action_dispatch/journey/router.rb:34
action_dispatch/routing/route_set.rb:908
logtail-rails/error_event.rb:24
logtail-rack/http_events.rb:213
logtail-rack/user_context.rb:74
logtail-rails/session_context.rb:16
logtail-rack/http_context.rb:23
logtail/current_context.rb:120
logtail/current_context.rb:44
logtail-rack/http_context.rb:22
rack/static.rb:161
rack/tempfile_reaper.rb:20
rack/etag.rb:29
rack/conditional_get.rb:31
rack/head.rb:15
action_dispatch/http/permissions_policy.rb:38
action_dispatch/http/content_security_policy.rb:38
rack/session/abstract/id.rb:274
rack/session/abstract/id.rb:268
action_dispatch/middleware/cookies.rb:706
action_dispatch/middleware/callbacks.rb:31
active_support/callbacks.rb:100
action_dispatch/middleware/callbacks.rb:30
sentry/rails/rescued_exception_interceptor.rb:14
action_dispatch/middleware/debug_exceptions.rb:31
sentry/rack/capture_exceptions.rb:30
sentry/hub.rb:269
sentry-ruby.rb:420
sentry/rack/capture_exceptions.rb:21
sentry/hub.rb:59
sentry-ruby.rb:400
sentry/rack/capture_exceptions.rb:20
action_dispatch/middleware/show_exceptions.rb:32
rails/rack/logger.rb:41
rails/rack/logger.rb:29
action_dispatch/middleware/remote_ip.rb:96
action_dispatch/middleware/request_id.rb:34
rack/method_override.rb:28
rack/runtime.rb:24
active_support/cache/strategy/local_cache_middleware.rb:29
action_dispatch/middleware/executor.rb:16
action_dispatch/middleware/static.rb:27
rack/sendfile.rb:114
action_dispatch/middleware/ssl.rb:92
rails/engine.rb:535
puma/configuration.rb:279
puma/request.rb:99
puma/thread_pool.rb:390
puma/request.rb:98
puma/server.rb:472
puma/server.rb:254
puma/thread_pool.rb:167

Tip

You can make revisions or ask questions of Revise.dev by using /revise in any comment or review!

  • /revise Add a comment above the method to explain why we're making this change.
  • /revise Why did you choose to make this change specifically?

Important

If something doesn’t look right, click to retry this interaction.

Quick links: View in SentryView in Revise

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants