Sitelet https://github.com/aws/aws-sdk-ruby/issues/833
Skip to content

Exception at startup in Celluloid actor on aws-sdk (2.0.47) #833

Description

@tmornini

Hey there.

Reporting some odd behavior we're seeing during startup of a Celluloid based app.

NoMethodError: undefined method `new' for nil:NilClass
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/aws-sdk-core/xml/parser.rb:28:in `parse'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/aws-sdk-core/query/handler.rb:36:in `parse_xml'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/aws-sdk-core/query/handler.rb:13:in `block in call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/response.rb:43:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/response.rb:43:in `block in on'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/http/response.rb:137:in `block in on_success'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/http/response.rb:164:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/http/response.rb:164:in `block in listener'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/http/response.rb:128:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/http/response.rb:128:in `on_done'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/http/response.rb:135:in `on_success'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/response.rb:42:in `on'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/response.rb:51:in `on_success'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/aws-sdk-core/query/handler.rb:11:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/aws-sdk-core/plugins/user_agent.rb:12:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/plugins/restful_bindings.rb:13:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/plugins/endpoint.rb:31:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/plugins/param_validation.rb:22:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/plugins/raise_response_errors.rb:14:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/plugins/param_conversion.rb:22:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/aws-sdk-core/plugins/response_paging.rb:10:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/plugins/response_target.rb:18:in `call'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/request.rb:70:in `send_request'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/aws-sdk-core-2.0.47/lib/seahorse/client/base.rb:216:in `block (2 levels) in define_operation_methods'

... through our code ...

  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/celluloid-0.16.0/lib/celluloid/calls.rb:26:in `public_send'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/celluloid-0.16.0/lib/celluloid/calls.rb:26:in `dispatch'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/celluloid-0.16.0/lib/celluloid/calls.rb:63:in `dispatch'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/celluloid-0.16.0/lib/celluloid/cell.rb:60:in `block in invoke'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/celluloid-0.16.0/lib/celluloid/cell.rb:71:in `block in task'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/celluloid-0.16.0/lib/celluloid/actor.rb:357:in `block in task'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/celluloid-0.16.0/lib/celluloid/tasks.rb:57:in `block in initialize'
  /Users/tmornini/.rbenv/versions/1.9.3-p551/lib/ruby/gems/1.9.1/gems/celluloid-0.16.0/lib/celluloid/tasks/task_fiber.rb:15:in `block in create'

This issue is mostly non-deterministic:

  1. doesn't always happen
  2. sometimes happens more than once before resolving
  3. always resolves automatically as Actors are re-spawed

We've been upgrading for v1 -> v2 and this reminds me of AWS SDK v1 issues solved with #eager_autoload! and this same code triggered a common exception experienced in threads in ActiveSupport (undefined method `encode' for ActiveSupport::JSON:Module)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    guidanceQuestion that needs advice or information.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions