Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bundle without -j4 on Heroku

Tags:

heroku

bundler

Heroku seems to now default to parallel bundling with -j4 because I see in the push log:

Running: bundle install --without development:test:staging --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment

This throws an error which I can replicate locally with

bundle install -j4

The error locally is:

/Users/Emma/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/thread.rb:72:in `sleep': No live threads left. Deadlock? from /Users/Emma/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/thread.rb:72:in `block (2 levels) in wait'

The error when I attempt deployment is:

   /tmp/build_a49f4fc2-73b3-4101-9b67-f795fa643429/vendor/ruby-2.0.0/lib/ruby/2.0.0/thread.rb:72:in `sleep': No live threads left. Deadlock? (fatal)

How can I force Heroku to stop attempting to bundle gems in parallel?

edit: gemfile

ruby '2.0.0'
source 'http://rubygems.org'
# Rails
gem "rails", "~> 3.2.13"
gem 'rake', '10.1.0'
gem 'rails_12factor', group: :production

# Basic libraries
gem "unicorn", "4.6.2"
gem 'jquery-rails', '2.1.4'
gem 'nokogiri'
gem 'bundler'
gem "activesupport"
gem 'aws-s3'
gem 'aws-sdk' #required in 3.1.3 to get rake to work -- taken out may 13 as conflicts with s3
gem 'hirefireapp'
gem "hirefire-resource"
gem 'newrelic_rpm', "~> 3.6.5.130"

gem 'modernizr-rails'
gem 'gocardless'

# Background processing
gem 'delayed_job_active_record' #required in 3.1.3 to get DJ to work
gem "SystemTimer", :require => "system_timer", :platforms => :ruby_18
gem "rack-timeout"
gem 'delayed_paperclip'    , '2.4.5.2' # , :git => 'git://github.com/tommeier/delayed_paperclip', :branch => 'fix_312'
# Views
gem 'haml'
gem 'rdiscount', "~> 1.6.8" #manually included -- it's a dependency of simple tooltip
gem 'simple-tooltip', "~> 0.0.2"
gem 'will_paginate', '~>3.0'
gem 'will_paginate-bootstrap', '0.2.1'
gem 'gritter_notices', '~>0.3.4' #, :git => '[email protected]:ck3g/gritter_notices.git'
gem "ariane"
gem 'bootstrap-wysihtml5-rails'
gem 'gingerice'

gem 'gvis', '>= 2.0.0'
gem "google_visualr", ">= 2.1"
gem "zendesk_api"
gem "oink"

gem 'rubyzip', '1.0.0'
gem "zip-zip"
gem 's3_swf_upload'

group :assets do
  gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS
  gem 'less-rails-bootstrap'
  gem 'less'

end

gem "twitter-bootstrap-rails" # don't put in assets group for some stupid reason.
gem 'font-awesome-rails'
gem 'rabl'
gem 'gon'
gem 'versioncake', :git => 'git://github.com/bwillis/versioncake.git',  :branch => 'master'
gem "oauth-plugin", "~> 0.5.1"

# Authentication and authorisation
gem "cancan", '~> 1.6.7'
gem "devise" #, "~> 1.4.8"
gem 'devise_invitable', '~> 1.0.0'

# Barcodes
gem 'barby' #for generating barcodes
gem 'chunky_png' #for turning barcodes into png

# Forms
gem 'formtastic'
gem 'twitter_bootstrap_form_for'
gem 'client_side_validations', :git => "git://github.com/bcardarella/client_side_validations.git"
gem 'client_side_validations-formtastic'
gem 'cocoon' #adds link_to_add_association functionality in forms, so you can add nested fields using JS. https://github.com/nathanvda/cocoon
gem 'letsrate'
gem 'formtastic-bootstrap', " ~> 2.0.0"
gem 'active_link_to'


# Search
gem "ransack" #:git => "git://github.com/ernie/ransack.git"
gem 'pg_search', "0.7.0"
gem 'ancestry'

# IO
gem "activerecord-import" #used in one off class methods for importing. Provides the .import method.
gem "csv_builder"
gem 'pdfkit'
gem 'wkhtmltopdf'
gem "rmagick"
gem 'paperclip', '~> 2.3'
gem 'paperclip-meta' # extends function of paperclip gem: saves default thumbnail image size info in appropriate table
gem "googlebooks"
gem "amazon-ecs"
gem 'acts_as_xlsx'
gem "prawn", "~> 1.0.0.rc2"
gem 'activemodel-warnings'
gem "roo", "~> 1.11.2"
# Other
gem 'deep_cloneable', '~> 1.5.2'
gem "isbn"
gem 'wicked', '~> 0.5.0' #upgrade problem
gem "strip_attributes", "~> 1.2"
gem "microformats_helper"
gem "sanitize"
gem 'paper_trail', '~> 2'
gem "best_in_place"
gem 'shortener'
gem 'twitter'
gem 'acts-as-taggable-on', "~> 2.3.3" #upgrade problem
gem 'simple_calendar'

gem "yard" # yard server --reload for a server running on 8808

# Rails 3.1 - Asset Pipeline
gem 'json'
gem 'coffee-script'
gem 'sprockets-image_compressor', "~> 0.2.0"

group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'uglifier'
  gem 'yui-compressor'
  gem 'compass-rails'

end
# Rails 3.1 - Heroku
  gem 'pg', "=0.16.0"
  gem 'dalli'
  gem 'memcachier'
  gem 'seed_dump' # e.g. bundle exec rake db:seed:dump MODELS=ValidationTest,Book
  gem "figaro"

group(:development, :test) do
  gem 'simplecov', :require => false
  gem 'ruby-prof'
  gem 'annotate', :git => 'git://github.com/ctran/annotate_models.git' # run with bundle exec annotate
  gem "rails-erd" # for creaating erd diagrams. Run with rake erd
  gem 'autotest'
  gem 'autotest-rails'
  gem 'ZenTest', '4.5.0'
  gem 'factory_girl', "~> 3.0.0"
  gem 'factory_girl_rails'
  gem 'faker', '0.3.1', :require => false
  gem 'launchy'
  gem 'rspec'
  gem 'rspec-core', :require => 'rspec/core'
  gem 'rspec-expectations', :require => 'rspec/expectations'
  gem 'rspec-mocks', :require => 'rspec/mocks'
  gem 'rspec-rails'
  gem 'selenium-webdriver', '2.5.0'
  gem 'capybara'
  gem "fakes3"

end

gem 'lazy_high_charts'
gem 'bullet', group: :development
like image 499
snowangel Avatar asked Oct 02 '22 22:10

snowangel


1 Answers

Some gems have problem installing in parallel, these should be reported to bundler/bundler like this one https://github.com/bundler/bundler/issues/2813

In this Gemfile this is the problem line:

gem 'formtastic-bootstrap', " ~> 2.0.0"

Change to

gem 'formtastic-bootstrap', "2.1.3"

And it works. This is how I found it:

Install bundler latest $ gem install bundler

Then run $ bundle install -j4 this will try to install up to 4 gems in parallel.

When it fails with this error message

Unfortunately, a fatal error has occurred. Please see the Bundler troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!
/Users/schneems/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/bundler-1.5.1/lib/bundler/parallel_workers/worker.rb:33:in `pop': No live threads left. Deadlock? (fatal)

Find a Gem not checked out by running

$ bundle list
Could not find gem 'formtastic-bootstrap (~> 2.0.0) ruby' in the gems available on this machine.

Comment out that line in your Gemfile and repeat until your whole Gemfile installs. Once it installs gradually add back in the ones you commented. Likely a later version of a Gem will be able to fix the problem.

like image 152
Schneems Avatar answered Oct 12 '22 11:10

Schneems