rmosolgo / graphql-ruby

Ruby implementation of GraphQL
http://graphql-ruby.org
MIT License
5.38k stars 1.39k forks source link

rescue_from not working inside prepare methods #3399

Closed alvaromat closed 3 years ago

alvaromat commented 3 years ago

Describe the bug

The rescue_from helper used in GraphQL schema is not rescuing exceptions that happen inside prepare methods of InputObjects or arguments.

Versions

graphql version: 1.11.6 rails (or other framework): rails 5.1.6.2 other applicable versions (graphql-batch, etc)

GraphQL schema In the GraphQL schema, I'm using rescue_from to catch RecordNotFound exceptions, to avoid HTTP500 responses:

class Schema < GraphQL::Schema
  mutation Mutations::RootMutation
  query Queries::RootQuery

  rescue_from(ActiveRecord::RecordNotFound) do |_err, _obj, _args, _ctx, field|
    raise GraphQL::ExecutionError, "#{field.type.unwrap.graphql_name} not found"
  end
end

Then, I have an input type that finds an existing object if the argument id is provided.

class AttachmentInputType < GraphQL::Schema::InputObject
  argument :id, ID, required: false, description: ''
  argument :name, String, required: false

  def prepare
    attachment = Attachment.find!(id) if id.present? 
    # ...more code
  end
end

The same happens when we declare an argument with a prepare method:

class SomeInputType < GraphQL::Schema::InputObject
  argument :name, String, required: true
  argument :user, ID, required: true, prepare: :find_user

  def find_user(user)
    ::User.find_by!(id: user)
  end
end

Expected behavior

I expect the error to be rescued and to return a graphql-friendly error, but it seems that the rescue declared in the schema is not executed.

Actual behavior

A root GraphQL error was returned, with a 500 HTTP status code. The block provided to rescue_from is not being executed

Place full backtrace here (if a Ruby exception is involved):

Click to view exception backtrace ``` { "error": { "message": "Couldn't find User", "backtrace": [ "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activerecord-5.1.6.2/lib/active_record/core.rb:228:in `find_by!'", "/Users/alvaro/Documents/alkimii/app/graphql/types/team/users/user_document_input_type.rb:12:in `find_user'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/schema/argument.rb:212:in `public_send'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/schema/argument.rb:212:in `prepare_value'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/schema/input_object.rb:47:in `block in initialize'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/schema/input_object.rb:25:in `each_value'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/schema/input_object.rb:25:in `initialize'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/input_object_type.rb:84:in `new'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/input_object_type.rb:84:in `coerce_non_null_input'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/base_type.rb:169:in `coerce_input'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query/variables.rb:43:in `block (2 levels) in initialize'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/errors.rb:30:in `with_error_handling'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query/variables.rb:42:in `block in initialize'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query/variables.rb:19:in `each'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query/variables.rb:19:in `each_with_object'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query/variables.rb:19:in `initialize'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query.rb:224:in `new'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query.rb:224:in `block in variables'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query.rb:438:in `with_prepared_ast'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query.rb:223:in `variables'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query/validation_pipeline.rb:80:in `ensure_has_validated'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query/validation_pipeline.rb:47:in `internal_representation'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/query.rb:235:in `irep_selection'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/schema/member/instrumentation.rb:22:in `before_query'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/instrumentation.rb:58:in `public_send'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/instrumentation.rb:58:in `block in call_hooks'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/instrumentation.rb:57:in `each'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/instrumentation.rb:57:in `call_hooks'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/instrumentation.rb:44:in `each_query_call_hooks'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/instrumentation.rb:27:in `block in apply_instrumenters'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/instrumentation.rb:72:in `call_hooks'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/instrumentation.rb:26:in `apply_instrumenters'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/multiplex.rb:174:in `instrument_and_analyze'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/multiplex.rb:60:in `block in run_queries'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/tracing.rb:66:in `trace'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/multiplex.rb:58:in `run_queries'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/execution/multiplex.rb:48:in `run_all'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/schema.rb:1656:in `multiplex'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/graphql-1.11.6/lib/graphql/schema.rb:1627:in `execute'", "/Users/alvaro/Documents/alkimii/app/controllers/graphql_controller.rb:23:in `execute'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/abstract_controller/base.rb:186:in `process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb:118:in `process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_controller/metal/rendering.rb:30:in `process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/abstract_controller/callbacks.rb:20:in `block in process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activesupport-5.1.6.2/lib/active_support/callbacks.rb:131:in `run_callbacks'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/abstract_controller/callbacks.rb:19:in `process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_controller/metal/rescue.rb:20:in `process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activesupport-5.1.6.2/lib/active_support/notifications.rb:166:in `block in instrument'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activesupport-5.1.6.2/lib/active_support/notifications/instrumenter.rb:21:in `instrument'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activesupport-5.1.6.2/lib/active_support/notifications.rb:166:in `instrument'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_controller/metal/instrumentation.rb:30:in `process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_controller/metal/params_wrapper.rb:252:in `process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activerecord-5.1.6.2/lib/active_record/railties/controller_runtime.rb:22:in `process_action'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/abstract_controller/base.rb:124:in `process'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionview-5.1.6.2/lib/action_view/rendering.rb:30:in `process'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_controller/metal.rb:189:in `dispatch'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_controller/metal.rb:253:in `dispatch'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/routing/route_set.rb:49:in `dispatch'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/routing/route_set.rb:31:in `serve'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/journey/router.rb:50:in `block in serve'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/journey/router.rb:33:in `each'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/journey/router.rb:33:in `serve'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/routing/route_set.rb:844:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/xray-rails-0.3.2/lib/xray/middleware.rb:38:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/bullet-6.1.0/lib/bullet/rack.rb:15:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/cypress-on-rails-1.8.0/lib/cypress_on_rails/middleware.rb:20:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:192:in `call!'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/omniauth-1.9.0/lib/omniauth/strategy.rb:169:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/omniauth-1.9.0/lib/omniauth/builder.rb:64:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/apollo_upload_server-2.0.0.beta.3/lib/apollo_upload_server/middleware.rb:20:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/Documents/alkimii/lib/datadog/rack_middleware.rb:16:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/Documents/alkimii/lib/memory_hog_middleware.rb:39:in `record_request'", "/Users/alvaro/Documents/alkimii/lib/memory_hog_middleware.rb:23:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/warden-1.2.9/lib/warden/manager.rb:36:in `block in call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/warden-1.2.9/lib/warden/manager.rb:34:in `catch'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/warden-1.2.9/lib/warden/manager.rb:34:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/etag.rb:27:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/conditional_get.rb:40:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/head.rb:12:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:266:in `context'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/session/abstract/id.rb:260:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/cookies.rb:613:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activerecord-5.1.6.2/lib/active_record/migration.rb:556:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/callbacks.rb:26:in `block in call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activesupport-5.1.6.2/lib/active_support/callbacks.rb:97:in `run_callbacks'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/callbacks.rb:24:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/executor.rb:12:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rollbar-3.1.0/lib/rollbar/middleware/rails/rollbar.rb:25:in `block in call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rollbar-3.1.0/lib/rollbar.rb:145:in `scoped'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rollbar-3.1.0/lib/rollbar/middleware/rails/rollbar.rb:22:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/better_errors-2.8.1/lib/better_errors/middleware.rb:87:in `protected_app_call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/better_errors-2.8.1/lib/better_errors/middleware.rb:82:in `better_errors_call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/better_errors-2.8.1/lib/better_errors/middleware.rb:60:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/debug_exceptions.rb:59:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rollbar-3.1.0/lib/rollbar/middleware/rails/show_exceptions.rb:22:in `call_with_rollbar'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/web-console-3.7.0/lib/web_console/middleware.rb:135:in `call_app'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/web-console-3.7.0/lib/web_console/middleware.rb:30:in `block in call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/web-console-3.7.0/lib/web_console/middleware.rb:20:in `catch'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/web-console-3.7.0/lib/web_console/middleware.rb:20:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rails/middlewares.rb:17:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/rack/logger.rb:36:in `call_app'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/rack/logger.rb:24:in `block in call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activesupport-5.1.6.2/lib/active_support/tagged_logging.rb:69:in `block in tagged'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activesupport-5.1.6.2/lib/active_support/tagged_logging.rb:26:in `tagged'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/activesupport-5.1.6.2/lib/active_support/tagged_logging.rb:69:in `tagged'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/rack/logger.rb:24:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/sprockets-rails-3.2.2/lib/sprockets/rails/quiet_assets.rb:13:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/remote_ip.rb:79:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/request_store-1.5.0/lib/request_store/middleware.rb:19:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/request_id.rb:25:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/method_override.rb:24:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/runtime.rb:22:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/executor.rb:12:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/deflater.rb:44:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/actionpack-5.1.6.2/lib/action_dispatch/middleware/static.rb:125:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/sendfile.rb:110:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/middlewares.rb:87:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/webpacker-4.0.7/lib/webpacker/dev_server_proxy.rb:29:in `perform_request'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-proxy-0.6.5/lib/rack/proxy.rb:57:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/engine.rb:522:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/ddtrace-0.42.0/lib/ddtrace/contrib/rack/patcher.rb:52:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/unicorn-5.7.0/lib/unicorn/http_server.rb:632:in `process_client'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/unicorn-5.7.0/lib/unicorn/http_server.rb:728:in `worker_loop'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/unicorn-5.7.0/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/unicorn-5.7.0/lib/unicorn/http_server.rb:144:in `start'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/unicorn-rails-2.2.1/lib/unicorn_rails.rb:33:in `run'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/rack-2.2.3/lib/rack/server.rb:327:in `start'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/commands/server/server_command.rb:44:in `start'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/commands/server/server_command.rb:135:in `block in perform'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/commands/server/server_command.rb:130:in `tap'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/commands/server/server_command.rb:130:in `perform'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/command/base.rb:63:in `perform'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/command.rb:44:in `invoke'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/railties-5.1.6.2/lib/rails/commands.rb:16:in `'", "/Users/alvaro/Documents/alkimii/bin/rails:9:in `require'", "/Users/alvaro/Documents/alkimii/bin/rails:9:in `'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/spring-2.1.1/lib/spring/client/rails.rb:28:in `load'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/spring-2.1.1/lib/spring/client/rails.rb:28:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/spring-2.1.1/lib/spring/client/command.rb:7:in `call'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/spring-2.1.1/lib/spring/client.rb:30:in `run'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/spring-2.1.1/bin/spring:49:in `'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/spring-2.1.1/lib/spring/binstub.rb:11:in `load'", "/Users/alvaro/.rvm/gems/ruby-2.5.1@alkimii/gems/spring-2.1.1/lib/spring/binstub.rb:11:in `'", "/Users/alvaro/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", "/Users/alvaro/.rvm/rubies/ruby-2.5.1/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'", "/Users/alvaro/Documents/alkimii/bin/spring:15:in `'", "bin/rails:3:in `load'", "bin/rails:3:in `
'" ] }, "data": {} } ```
rmosolgo commented 3 years ago

Hi! Thanks for reporting this issue. I agree, those errors should be rescued.

However, it looks like you're using the legacy runtime instead of GraphQL::Execution::Interpreter, and you're not using the new GraphQL::Execution::Errors module. Both of those modules are enabled by default in GraphQL-Ruby 1.12.0.

Could you please upgrade to those modules and let me know if you still encounter this problem? It's possible that it's fixed there, although it might not be. In any case, I don't have bandwidth to continue supporting the old runtime and error handling module.

If you update and run into this trouble again, please open a new issue with the new exception backtrace, and I'll dig in!