Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ConnectionPool#release not thread_safe #6464

Closed
aselder opened this issue May 23, 2012 · 6 comments
Closed

ConnectionPool#release not thread_safe #6464

aselder opened this issue May 23, 2012 · 6 comments

Comments

@aselder
Copy link

aselder commented May 23, 2012

I'm doing some pretty heavy concurrent use of ActiveRecord, and noticed so weird stack traces popping up in my logs

2012-05-23T16:44:16Z 4468 TID-940 WARN: Detected invalid hash contents due to unsynchronized modifications with concurrent users
2012-05-23T16:44:16Z 4468 TID-940 WARN: org/jruby/RubyHash.java:1356:in `keys'
/usr/local/rvm/gems/jruby-1.6.7@new_import/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:294:in `release'
/usr/local/rvm/gems/jruby-1.6.7@new_import/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:282:in `checkin'
/usr/local/rvm/rubies/jruby-1.6.7/lib/ruby/1.9/monitor.rb:201:in `mon_synchronize'
/usr/local/rvm/rubies/jruby-1.6.7/lib/ruby/1.9/monitor.rb:200:in `mon_synchronize'
/usr/local/rvm/gems/jruby-1.6.7@new_import/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:276:in `checkin'
/usr/local/rvm/gems/jruby-1.6.7@new_import/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:110:in `release_connection'
/usr/local/rvm/gems/jruby-1.6.7@new_import/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:121:in `with_connection'
/data01/fansnap/import/current/lib/common_import/event_full_importer.rb:29:in `load_db_data'

Is the fix as simple as wrapping the contents of the release method in a synchronize block?

@tenderlove
Copy link
Member

It should be that easy. I think it's fixed on master, but please check. Regardless of whether or not this is fixed on master, please send a patch for 3-2-stable. :-)

@aselder
Copy link
Author

aselder commented May 23, 2012

Looks like it's fixed on master. I'll have a pull request for 3-2-stable shortly.

@brilyuhns
Copy link

I faced this issue in my production application on Jruby 1.7.4 on Rails 3.2

org.jruby.exceptions.RaiseException: (ConcurrencyError) Detected invalid hash contents due to unsynchronized modifications with concurrent users
 at org.jruby.RubyHash.keys(org/jruby/RubyHash.java:1427)
 at ActiveRecord::ConnectionAdapters::ConnectionPool.release(/opt/jruby-1.7.3/lib/ruby/gems/shared/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:299)
 at MonitorMixin.mon_synchronize(/opt/jruby-1.7.3/lib/ruby/1.9/monitor.rb:211)

@aselder
Copy link
Author

aselder commented Jun 10, 2014

You're using 3.2.8 of rails... This was fixed in a later patch release of rails 3.2

@brilyuhns
Copy link

Thank you @aselder I will upgrade :)

@cmthakur
Copy link

@tenderlove I am facing this issue again with following stacks:

jRuby version:
jruby-9.1.7.0

OS:
Ubuntu 16.04.3 LTS

JAVA version:

openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Rails version:
Rails 5.0.0.1 (api)

Application Server
Passenger Entreprise

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

No branches or pull requests

4 participants