qoobaa / s3

Library for accessing S3 objects and buckets, supports EU and US buckets
MIT License
258 stars 112 forks source link

Occasional "no implicit conversion of nil into String (TypeError)" when calling buckets.find #107

Closed lencioni closed 9 years ago

lencioni commented 9 years ago

I am occasionally seeing "no implicit conversion of nil into String (TypeError)" when calling buckets.find.

Here's the relevant bit of the stack trace:

/var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/signature.rb:139:in `digest': no implicit conversion of nil into String (TypeError)
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/signature.rb:139:in `canonicalized_signature'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/signature.rb:32:in `generate'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/connection.rb:188:in `block in send_request'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/2.2.0/net/http.rb:853:in `start'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/connection.rb:177:in `send_request'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/connection.rb:88:in `request'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/service.rb:77:in `service_request'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/bucket.rb:209:in `bucket_request'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/bucket.rb:171:in `bucket_headers'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/bucket.rb:16:in `retrieve'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/s3-0.3.23/lib/s3/buckets_extension.rb:12:in `find_first'
    from /var/lib/jenkins/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/bundler/gems/likadan-6e4a1e0fef94/lib/likadan_uploader.rb:46:in `find_or_build_bucket'

and here you can see the line of code that calls find: https://github.com/lencioni/likadan/blob/6e4a1e0f/lib/likadan_uploader.rb#L46

Here is the line that is erroring out: https://github.com/qoobaa/s3/blob/99fad2ae/lib/s3/signature.rb#L139

Any thoughts?

lencioni commented 9 years ago

Hmm, perhaps our secret_access_key is occasionally nil for some reason? Looking that that method, that seems to be the most likely culprit, in which case the problem lies elsewhere (likely somewhere in a Jenkins plugin for me).

lencioni commented 9 years ago

blarf, yeah, this seems to have been a configuration glitch. Perhaps it would be useful to add a helpful message if these things aren't set properly?

qoobaa commented 9 years ago

Could you create a PR adding a better error message?

lencioni commented 9 years ago

Sure!