Rubygems: Too Many Requests problem returns!

I’ve got a couple builds failing due to rubygem rate limiting. (One at Digital Ocean, another at a COLO outside Boston).

I thought that there was a recent update to the base Docker image that was supposed to mitigate this. It’s hard to find the error in the output too, since lots of stuff happens after those errors.

If you have a build that failed, you might search for “429 Too Many Requests”.

A year ago, the answer was:

Perhaps there has been a regression in bundler?

1 Like

We bumped the image quite recently … I think only 3 gems changed since the last base image.

https://github.com/discourse/discourse/commits/master/Gemfile.lock

2 Likes

I’m still getting 218 requests. I commented out non-standard plugins. Then all plugins. I’ve done a git pull (which is superfluous given the number of builds I’ve attempted). It’s still doing 218 HTTP GETs.

To where :blush: what are the URLs, we need to figure out if this is just a general rubygems bug or this is legit discourse being out of data locally.

1 Like
grep "HTTP GET" /tmp/build.log >/tmp/requests
HTTP GET https://index.rubygems.org/versions
HTTP GET https://index.rubygems.org/info/crass
HTTP GET https://index.rubygems.org/info/mini_portile2
HTTP GET https://index.rubygems.org/info/activesupport
HTTP GET https://index.rubygems.org/info/builder
HTTP GET https://index.rubygems.org/info/actionmailer
HTTP GET https://index.rubygems.org/info/actionview
HTTP GET https://index.rubygems.org/info/concurrent-ruby
HTTP GET https://index.rubygems.org/info/i18n
HTTP GET https://index.rubygems.org/info/thread_safe
HTTP GET https://index.rubygems.org/info/minitest
HTTP GET https://index.rubygems.org/info/tzinfo
HTTP GET https://index.rubygems.org/info/erubi
HTTP GET https://index.rubygems.org/info/activejob
HTTP GET https://index.rubygems.org/info/nokogiri
HTTP GET https://index.rubygems.org/info/rails-dom-testing
HTTP GET https://index.rubygems.org/info/rails-html-sanitizer
HTTP GET https://index.rubygems.org/info/loofah
HTTP GET https://index.rubygems.org/info/rake
HTTP GET https://index.rubygems.org/info/rack
HTTP GET https://index.rubygems.org/info/mail
HTTP GET https://index.rubygems.org/info/rack-test
HTTP GET https://index.rubygems.org/info/globalid
HTTP GET https://index.rubygems.org/info/activemodel
HTTP GET https://index.rubygems.org/info/mini_mime
HTTP GET https://index.rubygems.org/info/actionpack
HTTP GET https://index.rubygems.org/info/active_model_serializers
HTTP GET https://index.rubygems.org/info/addressable
HTTP GET https://index.rubygems.org/info/activerecord
HTTP GET https://index.rubygems.org/info/public_suffix
HTTP GET https://index.rubygems.org/info/arel
HTTP GET https://index.rubygems.org/info/ast
HTTP GET https://index.rubygems.org/info/aws-eventstream
HTTP GET https://index.rubygems.org/info/aws-sigv4
HTTP GET https://index.rubygems.org/info/jmespath
HTTP GET https://index.rubygems.org/info/aws-sdk-core
HTTP GET https://index.rubygems.org/info/aws-partitions
HTTP GET https://index.rubygems.org/info/aws-sdk-kms
HTTP GET https://index.rubygems.org/info/aws-sdk-s3
HTTP GET https://index.rubygems.org/info/ember-source
HTTP GET https://index.rubygems.org/info/execjs
HTTP GET https://index.rubygems.org/info/msgpack
HTTP GET https://index.rubygems.org/info/bootsnap
HTTP GET https://index.rubygems.org/info/byebug
HTTP GET https://index.rubygems.org/info/barber
HTTP GET https://index.rubygems.org/info/claide
HTTP GET https://index.rubygems.org/info/certified
HTTP GET https://index.rubygems.org/info/colored2
HTTP GET https://index.rubygems.org/info/chunky_png
HTTP GET https://index.rubygems.org/info/nap
HTTP GET https://index.rubygems.org/info/cork
HTTP GET https://index.rubygems.org/info/open4
HTTP GET https://index.rubygems.org/info/claide-plugins
HTTP GET https://index.rubygems.org/info/connection_pool
HTTP GET https://index.rubygems.org/info/coderay
HTTP GET https://index.rubygems.org/info/safe_yaml
HTTP GET https://index.rubygems.org/info/multipart-post
HTTP GET https://index.rubygems.org/info/crack
HTTP GET https://index.rubygems.org/info/cppjieba_rb
HTTP GET https://index.rubygems.org/info/faraday
HTTP GET https://index.rubygems.org/info/git
HTTP GET https://index.rubygems.org/info/kramdown
HTTP GET https://index.rubygems.org/info/unicode-display_width
HTTP GET https://index.rubygems.org/info/faraday-http-cache
HTTP GET https://index.rubygems.org/info/terminal-table
HTTP GET https://index.rubygems.org/info/octokit
HTTP GET https://index.rubygems.org/info/sawyer
HTTP GET https://index.rubygems.org/info/no_proxy_fix
HTTP GET https://index.rubygems.org/info/danger
HTTP GET https://index.rubygems.org/info/diff-lcs
HTTP GET https://index.rubygems.org/info/exifr
HTTP GET https://index.rubygems.org/info/in_threads
HTTP GET https://index.rubygems.org/info/image_size
HTTP GET https://index.rubygems.org/info/progress
HTTP GET https://index.rubygems.org/info/fspath
HTTP GET https://index.rubygems.org/info/discourse_image_optim
HTTP GET https://index.rubygems.org/info/email_reply_trimmer
HTTP GET https://index.rubygems.org/info/ember-data-source
HTTP GET https://index.rubygems.org/info/sprockets
HTTP GET https://index.rubygems.org/info/ember-handlebars-template
HTTP GET https://index.rubygems.org/info/method_source
HTTP GET https://index.rubygems.org/info/railties
HTTP GET https://index.rubygems.org/info/thor
HTTP GET https://index.rubygems.org/info/jquery-rails
HTTP GET https://index.rubygems.org/info/excon
HTTP GET https://index.rubygems.org/info/fabrication
HTTP GET https://index.rubygems.org/info/ember-rails
HTTP GET https://index.rubygems.org/info/fakeweb
HTTP GET https://index.rubygems.org/info/fast_blank
HTTP GET https://index.rubygems.org/info/rake-compiler
HTTP GET https://index.rubygems.org/info/fast_xor
HTTP GET https://index.rubygems.org/info/fast_xs
HTTP GET https://index.rubygems.org/info/ffi
HTTP GET https://index.rubygems.org/info/fastimage
HTTP GET https://index.rubygems.org/info/flamegraph
HTTP GET https://index.rubygems.org/info/gc_tracer
HTTP GET https://index.rubygems.org/info/guess_html_encoding
HTTP GET https://index.rubygems.org/info/hashdiff
HTTP GET https://index.rubygems.org/info/hashie
HTTP GET https://index.rubygems.org/info/highline
HTTP GET https://index.rubygems.org/info/hiredis
HTTP GET https://index.rubygems.org/info/hkdf
HTTP GET https://index.rubygems.org/info/htmlentities
HTTP GET https://index.rubygems.org/info/kgio
HTTP GET https://index.rubygems.org/info/jaro_winkler
HTTP GET https://index.rubygems.org/info/jwt
HTTP GET https://index.rubygems.org/info/http_accept_language
HTTP GET https://index.rubygems.org/info/libv8
HTTP GET https://index.rubygems.org/info/rb-fsevent
HTTP GET https://index.rubygems.org/info/rb-inotify
HTTP GET https://index.rubygems.org/info/ruby_dep
HTTP GET https://index.rubygems.org/info/listen
HTTP GET https://index.rubygems.org/info/request_store
HTTP GET https://index.rubygems.org/info/logstash-event
HTTP GET https://index.rubygems.org/info/lograge
HTTP GET https://index.rubygems.org/info/logstash-logger
HTTP GET https://index.rubygems.org/info/logster
HTTP GET https://index.rubygems.org/info/lru_redux
HTTP GET https://index.rubygems.org/info/maxminddb
HTTP GET https://index.rubygems.org/info/memory_profiler
HTTP GET https://index.rubygems.org/info/message_bus
HTTP GET https://index.rubygems.org/info/mini_racer
HTTP GET https://index.rubygems.org/info/metaclass
HTTP GET https://index.rubygems.org/info/mini_scheduler
HTTP GET https://index.rubygems.org/info/mini_sql
HTTP GET https://index.rubygems.org/info/mini_suffix
HTTP GET https://index.rubygems.org/info/mocha
HTTP GET https://index.rubygems.org/info/mock_redis
HTTP GET https://index.rubygems.org/info/moneta
HTTP GET https://index.rubygems.org/info/multi_json
HTTP GET https://index.rubygems.org/info/multi_xml
HTTP GET https://index.rubygems.org/info/mustache
HTTP GET https://index.rubygems.org/info/nokogumbo
HTTP GET https://index.rubygems.org/info/oauth
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=actionmailer%2Cactionpack%2Cactionview%2Cactive_model_serializers%2Cactivejob%2Cactivemodel%2Cactiverecord%2Cactivesupport%2Caddressable%2Carel%2Cast%2Caws-eventstream%2Caws-partitions%2Caws-sdk-core%2Caws-sdk-kms%2Caws-sdk-s3%2Caws-sigv4%2Cbarber%2Cbootsnap%2Cbuilder%2Cbyebug%2Ccertified%2Cchunky_png%2Cclaide%2Ccolored2%2Cconcurrent-ruby%2Ccork%2Ccrass%2Cember-source%2Cerubi%2Cexecjs%2Cglobalid%2Ci18n%2Cjmespath%2Cloofah%2Cmail%2Cmini_mime%2Cmini_portile2%2Cminitest%2Cmsgpack%2Cnap%2Cnokogiri%2Cpublic_suffix%2Crack%2Crack-test%2Crails-dom-testing%2Crails-html-sanitizer%2Crake%2Cthread_safe%2Ctzinfo
HTTP GET https://index.rubygems.org/info/oauth2
HTTP GET https://index.rubygems.org/info/oj
HTTP GET https://index.rubygems.org/info/omniauth
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=claide-plugins%2Ccoderay%2Cconnection_pool%2Ccppjieba_rb%2Ccrack%2Cdanger%2Cdiff-lcs%2Cdiscourse_image_optim%2Cemail_reply_trimmer%2Cember-data-source%2Cember-handlebars-template%2Cember-rails%2Cexcon%2Cexifr%2Cfabrication%2Cfakeweb%2Cfaraday%2Cfaraday-http-cache%2Cfast_blank%2Cfast_xor%2Cfast_xs%2Cfastimage%2Cffi%2Cflamegraph%2Cfspath%2Cgc_tracer%2Cgit%2Cguess_html_encoding%2Chashdiff%2Chashie%2Chighline%2Chiredis%2Cimage_size%2Cin_threads%2Cjquery-rails%2Ckramdown%2Cmethod_source%2Cmultipart-post%2Cno_proxy_fix%2Coctokit%2Copen4%2Cprogress%2Crailties%2Crake-compiler%2Csafe_yaml%2Csawyer%2Csprockets%2Cterminal-table%2Cthor%2Cunicode-display_width
HTTP GET https://index.rubygems.org/info/omniauth-oauth2
HTTP GET https://index.rubygems.org/info/omniauth-facebook
HTTP GET https://index.rubygems.org/info/omniauth-github
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=hkdf%2Chtmlentities%2Chttp_accept_language%2Cjaro_winkler%2Cjwt%2Ckgio%2Clibv8%2Clisten%2Clograge%2Clogstash-event%2Clogstash-logger%2Clogster%2Clru_redux%2Cmaxminddb%2Cmemory_profiler%2Cmessage_bus%2Cmetaclass%2Cmini_racer%2Cmini_scheduler%2Cmini_sql%2Cmini_suffix%2Cmocha%2Cmock_redis%2Cmoneta%2Cmulti_json%2Cmulti_xml%2Cmustache%2Cnokogumbo%2Coauth%2Coauth2%2Coj%2Comniauth%2Comniauth-facebook%2Comniauth-github%2Comniauth-google-oauth2%2Comniauth-instagram%2Comniauth-oauth%2Comniauth-oauth2%2Comniauth-openid%2Comniauth-twitter%2Conebox%2Copenid-redis-store%2Crack-openid%2Crb-fsevent%2Crb-inotify%2Credis%2Crequest_store%2Cruby-openid%2Cruby_dep%2Csanitize
HTTP GET https://index.rubygems.org/info/omniauth-google-oauth2
HTTP GET https://index.rubygems.org/info/omniauth-instagram
HTTP GET https://index.rubygems.org/info/ruby-openid
HTTP GET https://index.rubygems.org/info/omniauth-oauth
HTTP GET https://index.rubygems.org/info/rack-openid
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=parallel%2Cparser%2Cpg%2Cpowerpack%2Cpry%2Cpry-nav%2Cpry-rails%2Cpuma%2Cr2%2Crack-mini-profiler%2Crack-protection%2Crails_multisite%2Crainbow%2Craindrops%2Crbtrace%2Crchardet%2Credis-namespace%2Crinku%2Crotp%2Crqrcode%2Crspec%2Crspec-core%2Crspec-expectations%2Crspec-html-matchers%2Crspec-mocks%2Crspec-rails%2Crspec-support%2Crtlit%2Crubocop%2Cruby-progressbar%2Cruby-readability%2Csass%2Csass-listen%2Csassc%2Cseed-fu%2Cshoulda%2Cshoulda-context%2Cshoulda-matchers%2Csidekiq%2Cslop%2Csprockets-rails%2Csshkey%2Cstackprof%2Ctilt%2Ctrollop%2Cuglifier%2Cunf%2Cunf_ext%2Cunicorn%2Cwebmock
HTTP GET https://index.rubygems.org/info/omniauth-openid
HTTP GET https://index.rubygems.org/info/omniauth-twitter
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=webpush
HTTP GET https://index.rubygems.org/info/sanitize
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=active-model-adapter-source%2Cactivemodel-globalid%2Cactiverecord-deprecated_finders%2Catomic%2Cbcrypt-ruby%2Cbones%2Ccamping%2Ccase_transform%2Ccolored%2Ccolumnize%2Cdebugger-linecache%2Cember-cli-assets%2Cember-es6_template%2Cember-template-compiler-source%2Cerubis%2Cfcgi%2Cfunctional-ruby%2Cgitlab%2Cgrit%2Chandlebars-source%2Choe%2Cjamespath%2Cjourney%2Cjson%2Cjson_pure%2Cjsonapi%2Cjsonapi-renderer%2Claunchy%2Cmemcache-client%2Cmime-types%2Cmini_portile%2Cmongrel%2Cpkg-config%2Cracc%2Crack-cache%2Crack-mount%2Crails-deprecated_sanitizer%2Crb-readline%2Crcov%2Credcarpet%2Cref%2Crexical%2Csnappy%2Ctenderlove-frex%2Ctest-spec%2Ctext-format%2Cthin%2Ctlsmail%2Ctreetop%2Cweakling
HTTP GET https://index.rubygems.org/info/onebox
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=base32%2Ccelluloid%2Ccelluloid-io%2Ccucumber%2Cescape_utils%2Ceventmachine%2Cfaraday-middleware%2Cfaraday_middleware%2Cfast_stack%2Cffi-xattr%2Chexpress%2Chike%2Chpricot%2Chttpauth%2Cnetrc%2Cnewgem%2Coa-basic%2Coa-core%2Coa-enterprise%2Coa-more%2Coa-oauth%2Coa-openid%2Copengraph_parser%2Coptimist%2Cpdf-reader%2Cpry-doc%2Cpsych%2Crack-ssl%2Crails%2Crash%2Crb-appscript%2Crb-fchange%2Crb-kqueue%2Crdoc%2Cruby-hmac%2Cruby-yadis%2Cruby_parser%2Csexp_processor%2Cspicycode-rcov%2Cspoon%2Cstud%2Csyntax%2Ctermios%2Curi_template%2Cverbal_expressions%2Cwebrat%2Cwin32console%2Cxattr%2Cyajl-ruby%2Cyard
HTTP GET https://index.rubygems.org/info/redis
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=astrolabe%2Cbackports%2Cbourne%2Cbundler%2Ccompass%2Ccurses%2Crspec-collection_matchers%2Csinatra%2Cslim%2Csprockets-sass%2Cterm-ansicolor%2Ctherubyracer%2Ctins
HTTP GET https://index.rubygems.org/info/openid-redis-store
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=RubyInline%2CZenTest%2Cabstract%2Carchive-tar-minitar%2Cbabel-transpiler%2Cbcrypt%2Cbones-extras%2Cbones-git%2Ccelluloid-essentials%2Ccelluloid-extras%2Ccelluloid-fsm%2Ccelluloid-pool%2Ccelluloid-supervision%2Ccgi_multipart_eof_fix%2Cconfiguration%2Ccucumber-wire%2Cdaemons%2Cdebugger-ruby_core_source%2Cdotenv%2Ceventmachine-le%2Cfacets%2Cfacter%2Cfastthread%2Cflexmock%2Cgem_plugin%2Cgemcutter%2Cgherkin%2Chttp_parser.rb%2Chttparty%2Cjsonapi-parser%2Clittle-plugger%2Cloquacious%2Cmab%2Cmarkaby%2Cmetaid%2Cmime-types-data%2Cmulti_test%2Cmultimap%2Cnenv%2Cnio4r%2Cpolyglot%2Cposix-spawn%2Cpreforker%2Crspec-logsplit%2Cruby_core_source%2Crubyforge%2Csnappy-jars%2Cspruz%2Ctext-hyphen%2Ctimers
HTTP GET https://index.rubygems.org/info/parser
HTTP GET https://index.rubygems.org/info/parallel
HTTP GET https://index.rubygems.org/info/pg
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=Ascii85%2CParseTree%2CRedCloth%2CXMLCanonicalizer%2Cactioncable%2Cactionwebservice%2Cactiveresource%2Cactivestorage%2Cafm%2Ccompass-core%2Ccompass-import-once%2Ccucumber-core%2Ccucumber-expressions%2Ccucumber-formatter-dots%2Cevent-bus%2Cfssm%2Cgherkin3%2Chaml%2Chashery%2Cjar-dependencies%2Cmetriks%2Cmustermann%2Cnet-ldap%2Cpyu-ruby-sasl%2Crest-client%2Crestclient%2Croauth%2Crubigen%2Cruby-openid-apps-discovery%2Cruby-rc4%2Crubyntlm%2Cshotgun%2Csprockets-helpers%2Ctemple%2Cttfunk%2Cuuid%2Cwin32-api
HTTP GET https://index.rubygems.org/info/powerpack
HTTP GET https://index.rubygems.org/info/slop
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=CFPropertyList%2CSexpProcessor%2Cactivemodel-serializers-xml%2Cavl_tree%2Cbabel-source%2Cblankslate%2Cbones-rcov%2Cbones-rspec%2Cbones-rubyforge%2Cbones-zentest%2Cc21e%2Ccelluloid-gems%2Ccoffee-rails%2Ccoveralls%2Ccucumber-messages%2Ccucumber-tag_expressions%2Cdotenv-deployment%2Cechoe%2Cem-hiredis%2Cfaye-websocket%2Chitimes%2Chttp-accept%2Chttp-cookie%2Cjnunemaker-crack%2Clog4r%2Cmacaddr%2Cmarcel%2Cmaruku%2Cminitar%2Cminitar-cli%2Cnet-scp%2Cos%2Crails-observers%2Crbtree%2Cruby-maven%2Csys-admin%2Ctest-unit%2Cthoughtbot-shoulda%2Ctool%2Cwebsocket-driver%2Cwin32-dir%2Cwin32-security%2Cwindows-api%2Cwindows-pr
HTTP GET https://index.rubygems.org/info/pry
HTTP GET https://index.rubygems.org/info/pry-nav
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=allison%2Ccoffee-script%2Ccolorize%2Cdomain_name%2Cffi-win32-extensions%2Cgoogle-protobuf%2Clibxml-ruby%2Cmaven-tools%2Cmimemagic%2Cmkrf%2Cnet-ssh%2Cpower_assert%2Cpowerbar%2Cruby-maven-libs%2Csimplecov%2Csqlite3%2Csystemu%2Cwebsocket-extensions
HTTP GET https://index.rubygems.org/info/pry-rails
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=ansi%2Cbcrypt_pbkdf%2Ccoffee-script-source%2Cdocile%2Cjruby-pageant%2Clockfile%2Cneedle%2Cpattern-match%2Crbnacl%2Crbnacl-libsodium%2Csimplecov-html%2Cvirtus
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=axiom-types%2Ccoercible%2Cdescendants_tracker%2Cequalizer
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=adamantium%2Cice_nine
HTTP GET https://index.rubygems.org/api/v1/dependencies?gems=memoizable
HTTP GET https://index.rubygems.org/info/rack-mini-profiler
HTTP GET https://index.rubygems.org/info/puma
HTTP GET https://index.rubygems.org/info/rack-protection
HTTP GET https://index.rubygems.org/info/raindrops
HTTP GET https://index.rubygems.org/info/rbtrace
HTTP GET https://index.rubygems.org/info/rainbow
HTTP GET https://index.rubygems.org/info/rchardet
HTTP GET https://index.rubygems.org/info/r2
HTTP GET https://index.rubygems.org/info/redis-namespace
HTTP GET https://index.rubygems.org/info/rinku
HTTP GET https://index.rubygems.org/info/trollop
HTTP GET https://index.rubygems.org/info/rqrcode
HTTP GET https://index.rubygems.org/info/rails_multisite
HTTP GET https://index.rubygems.org/info/rotp
HTTP GET https://index.rubygems.org/info/rspec-support
HTTP GET https://index.rubygems.org/info/rspec-core
HTTP GET https://index.rubygems.org/info/rspec-mocks
HTTP GET https://index.rubygems.org/info/rspec-expectations
HTTP GET https://index.rubygems.org/info/rspec
HTTP GET https://index.rubygems.org/info/rspec-html-matchers
HTTP GET https://index.rubygems.org/info/rspec-rails
HTTP GET https://index.rubygems.org/info/rtlit
HTTP GET https://index.rubygems.org/info/ruby-progressbar
HTTP GET https://index.rubygems.org/info/rubocop
HTTP GET https://index.rubygems.org/info/ruby-readability
HTTP GET https://index.rubygems.org/info/sass
HTTP GET https://index.rubygems.org/info/sass-listen
HTTP GET https://index.rubygems.org/info/sassc
HTTP GET https://index.rubygems.org/info/seed-fu
HTTP GET https://index.rubygems.org/info/shoulda-context
HTTP GET https://index.rubygems.org/info/shoulda-matchers
HTTP GET https://index.rubygems.org/info/shoulda
HTTP GET https://index.rubygems.org/info/sidekiq
HTTP GET https://index.rubygems.org/info/sshkey
HTTP GET https://index.rubygems.org/info/sprockets-rails
HTTP GET https://index.rubygems.org/info/tilt
HTTP GET https://index.rubygems.org/info/stackprof
HTTP GET https://index.rubygems.org/info/uglifier
HTTP GET https://index.rubygems.org/info/unf_ext
HTTP GET https://index.rubygems.org/info/unf
HTTP GET https://index.rubygems.org/info/unicorn
HTTP GET https://index.rubygems.org/info/webmock
HTTP GET https://index.rubygems.org/info/webpush
1 Like

Yeah I don’t think there is anything we can do here, maybe @indirect has some tips here. I definitely don’t want to be hammering rubygems, but we got to do a bundle on bootstrap.

1 Like

Is there an easy way to put a proxy in the middle and/or put some delay between the requests? Do you guys get all your stuff directly from rubygems?

I think to get into rubygems bad books you need to be mega offensive, we only bootstrap once for our internal deploys and reuse a base image so we never hit this.

2 Likes

Just to be super clear: those 255 requests are completely normal and correct, and I have never heard of anyone getting 429 rate limited for that kind of install. Our rate limits kick in for hundreds or thousands of requests per second for hours or days. If you think you’ve been wrongly rate limited, open a ticket at github.com/rubygems/rubygems.org/issues/new and someone from the rg.org team will take a look.

7 Likes

Thanks, @indirect. I have done lots of rebuilds on this machine, but only a couple hundred requests per manually started build (which look normal and expected to both you and me).

Could some bad actor on the same network be the problem? (I know that I had this problem on another machine, but I can’t remember now where that machine was).

Here are the 429s I got on that same build:

HTTP 429 Too Many Requests https://index.rubygems.org/info/fast_blank
HTTP 429 Too Many Requests https://index.rubygems.org/info/ember-rails
HTTP 429 Too Many Requests https://index.rubygems.org/info/message_bus
HTTP 429 Too Many Requests https://index.rubygems.org/info/maxminddb
HTTP 429 Too Many Requests https://index.rubygems.org/info/mock_redis
HTTP 429 Too Many Requests https://index.rubygems.org/info/mini_scheduler
HTTP 429 Too Many Requests https://index.rubygems.org/info/oauth
HTTP 429 Too Many Requests https://index.rubygems.org/info/omniauth-instagram
HTTP 429 Too Many Requests https://index.rubygems.org/info/rack-openid
HTTP 429 Too Many Requests https://index.rubygems.org/info/omniauth-openid
HTTP 429 Too Many Requests https://index.rubygems.org/info/openid-redis-store
HTTP 429 Too Many Requests https://index.rubygems.org/info/parser
HTTP 429 Too Many Requests https://index.rubygems.org/info/email_reply_trimmer
HTTP 429 Too Many Requests https://index.rubygems.org/info/htmlentities
HTTP 429 Too Many Requests https://index.rubygems.org/info/guess_html_encoding
HTTP 429 Too Many Requests https://index.rubygems.org/info/logster
HTTP 429 Too Many Requests https://index.rubygems.org/info/http_accept_language
HTTP 429 Too Many Requests https://index.rubygems.org/info/memory_profiler
HTTP 429 Too Many Requests https://index.rubygems.org/info/mocha
HTTP 429 Too Many Requests https://index.rubygems.org/info/omniauth-github
HTTP 429 Too Many Requests https://index.rubygems.org/info/ember-data-source
HTTP 429 Too Many Requests https://index.rubygems.org/info/fast_xs
HTTP 429 Too Many Requests https://index.rubygems.org/info/moneta
HTTP 429 Too Many Requests https://index.rubygems.org/info/omniauth-oauth
HTTP 429 Too Many Requests https://index.rubygems.org/info/mustache
HTTP 429 Too Many Requests https://index.rubygems.org/info/rinku
HTTP 429 Too Many Requests https://index.rubygems.org/info/sassc
HTTP 429 Too Many Requests https://index.rubygems.org/info/rtlit
HTTP 429 Too Many Requests https://index.rubygems.org/info/ruby-readability
HTTP 429 Too Many Requests https://index.rubygems.org/info/seed-fu
HTTP 429 Too Many Requests https://index.rubygems.org/info/shoulda-context
HTTP 429 Too Many Requests https://index.rubygems.org/info/shoulda-matchers
HTTP 429 Too Many Requests https://index.rubygems.org/info/webpush
HTTP 429 Too Many Requests https://index.rubygems.org/info/webmock
2 Likes

You got to open a ticket on GitHub with RubyGems, its kind of a waste to do any more diagnostics here.

4 Likes

Well, that wasn’t as helpful as we might have liked.

Well, I tried building it on another machine on the same subnet and it failed too.

I don’t see any way that I could be using the old bundler, as I’m pulling the current Discourse image from Docker, right?

I’m pretty perplexed. I’ll see if I can find the other instance that was failing.

I am confused, can you link me to the issue you opened?

https://github.com/rubygems/rubygems.org/issues/1841#issuecomment-443191752

1 Like

I got around this problem by temporary limiting the server’s bandwidth using wondershaper. This is just a shell script which simplifies handling of iproute’s tc command.

Example at Ubuntu 18.04: limit bandwidth to ancient 2048 kBit download and 512 kBit upload like this:

wondershaper -a eth0 -d 2048 -u 512

Don’t forget to reset it after successfully bootstrapping Discourse:

wondershaper -c -a eth0

You just need the shell script wondershaper by the way. No need to install any service.

3 Likes

Well, now they say they fixed a problem.

At https://github.com/rubygems/rubygems.org/issues/1841#issuecomment-445787812

2 Likes

Hi,

To correct the problem I used 2 options:

  • Set up a cache with gemirro (https://github.com/PierreRambaud/gemirro) then overloaded templates / web.template.yml with a

           - gem sources --add https://gems.mydepo.com/ --remove https://rubygems.org/
           - su discourse -c 'bundle config mirror.https://rubygems.org https://gems.mydepo.com/'
    
  • Or in templates / web.template.yml modified the number of jobs at the ‘bundle install’

1 Like