Hello,
After having switched from MySQL DB to PostgreSQL, Active Record Multi-thread application turned not to work due to PostgreSQL deadlock error.
This problem can be reproduced running Active Record Unit Test on the following environment:
Windows XP SP2 ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] activerecord (2.0.2) ruby-postgres (0.7.1.2006.04.06) postgresql-8.3.1-1
I wasn't able to get any helpful information about this problem searching on Internet. Is "allow_concurrency=true" supported on Windows AR + PostgreSQL ? Is there any patch or work-around to this problem ? Any information would be appreciated.
Thanks.
-nao
C:\PostgreSQL\activerecord-2.0.2\test>ruby -I connections \native_postgresql all.rb Using native PostgreSQL Loaded suite all Started ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ..........WARNING: there is already a transaction in progress WARNING: there is already a transaction in progress WARNING: there is already a transaction in progress WARNING: there is no transaction in progress WARNING: there is no transaction in progress FWARNING: there is already a transaction in progress WARNING: there is already a transaction in progress WARNING: there is no transaction in progress WARNING: there is no transaction in progress ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ................................................................................ ...............................deadlock 0x709809c: sleep:S - ./../lib/ active_re cord/connection_adapters/postgresql_adapter.rb:397 deadlock 0x294c74c: sleep:J(0x709809c) (main) - ./locking_test.rb:272 deadlock 0x709313c: sleep:S - ./../lib/active_record/ connection_adapters/postgr esql_adapter.rb:397 ./../lib/active_record/connection_adapters/postgresql_adapter.rb: 397:in `duel': Thread(0x709313c): deadlock (fatal) from ./locking_test.rb:241:in `test_no_locks_no_wait' from C:/win32app/ruby/lib/ruby/gems/1.8/gems/mocha-0.5.6/lib/ mocha/test_ case_adapter.rb:19:in `__send__' from C:/win32app/ruby/lib/ruby/gems/1.8/gems/mocha-0.5.6/lib/ mocha/test_ case_adapter.rb:19:in `run' from C:/win32app/ruby/lib/ruby/1.8/test/unit/testsuite.rb: 34:in `run' from C:/win32app/ruby/lib/ruby/1.8/test/unit/testsuite.rb: 33:in `each' from C:/win32app/ruby/lib/ruby/1.8/test/unit/testsuite.rb: 33:in `run' from C:/win32app/ruby/lib/ruby/1.8/test/unit/testsuite.rb: 34:in `run' from C:/win32app/ruby/lib/ruby/1.8/test/unit/testsuite.rb: 33:in `each' from C:/win32app/ruby/lib/ruby/1.8/test/unit/testsuite.rb: 33:in `run' from C:/win32app/ruby/lib/ruby/1.8/test/unit/ui/ testrunnermediator.rb:46 :in `run_suite' from C:/win32app/ruby/lib/ruby/1.8/test/unit/ui/console/ testrunner.rb:67 :in `start_mediator' from C:/win32app/ruby/lib/ruby/1.8/test/unit/ui/console/ testrunner.rb:41 :in `start' from C:/win32app/ruby/lib/ruby/1.8/test/unit/ui/ testrunnerutilities.rb:2 9:in `run' from C:/win32app/ruby/lib/ruby/1.8/test/unit/autorunner.rb: 216:in `run' from C:/win32app/ruby/lib/ruby/1.8/test/unit/autorunner.rb: 12:in `run' from C:/win32app/ruby/lib/ruby/1.8/test/unit.rb:278 from all.rb:1