Error when accessing ActiveRecord 3.1.0.rc4 database from Resque worker

I am using ActiveRecord in a Sinatra application that uses Resque for background tasks. I wanted to try out the 3.1rc in order to play with serialization strategies. When switching to ActiveRecord 3.1rc4 my application’s unit and spec tests all pass but when running a Resque working in it’s own process I get the following stack trace:

 PGError: ERROR: prepared statement "a3" already exists : SELECT

“channels”.* FROM “channels” WHERE “channels”.“id” = $1 LIMIT 1

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:964:in `prepare’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:964:in `exec_cache’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:548:in `block in exec_query’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract_adapter.rb:222:in `block in log’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activesupport-3.1.0.rc4/lib/active_support/notifications/instrumenter.rb:21:in `instrument’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract_adapter.rb:217:in `log’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:546:in `exec_query’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:1027:in `select’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/database_statements.rb:9:in `select_all’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/query_cache.rb:62:in `select_all’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/base.rb:473:in `find_by_sql’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/relation.rb:109:in `to_a’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/relation/finder_methods.rb:370:in `find_first’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/relation/finder_methods.rb:122:in `first’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/relation/finder_methods.rb:328:in `find_one’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/relation/finder_methods.rb:304:in `find_with_ids’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/relation/finder_methods.rb:107:in `find’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/activerecord-3.1.0.rc4/lib/active_record/base.rb:444:in `find’

 /Users/steven/Code/ruby/aji/queues/populate_channel.rb:10:in `perform'

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/resque-1.17.1/lib/resque/job.rb:127:in `perform’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/resque-1.17.1/lib/resque/worker.rb:163:in `perform’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/resque-1.17.1/lib/resque/worker.rb:130:in `block in work’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/resque-1.17.1/lib/resque/worker.rb:116:in `loop’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/resque-1.17.1/lib/resque/worker.rb:116:in `work’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@aji/gems/resque-1.17.1/lib/resque/tasks.rb:27:in `block (2 levels) in <top (required)>’

/Users/steven/.rvm/gems/ruby-1.9.2-p180@global/gems/rake-0.9.2/lib/rake/task.rb:205:in `call’

… rest is just rake.

The failing code is simply


class PopulateChannel

       def self.perform channel_id

         Channel.find(channel_id).populate

       end

end

which runs fine in all cases using ActiveRecord 3.0.4.

This is my first post to rails-core and first bug report to a mailing list. If there is any better or further information I can provide I will be more than happy to do so.

Thanks,