- ActiveRecord::Base.transaction do
- # Avoid deadlock by locking all tables before doing anything
- # drastic.
- table_names = '"' + fixturesets.sort.join('","') + '"'
- ActiveRecord::Base.connection.execute \
- "LOCK TABLE #{table_names} IN SHARE ROW EXCLUSIVE MODE"
-
- # Delete existing fixtures (and everything else) from fixture
- # tables
- fixturesets.each do |x|
- x.classify.constantize.unscoped.delete_all
- end
+ # Don't reset keep_services: clients need to discover our
+ # integration-testing keepstores, not test fixtures.
+ fixturesets -= %w[keep_services]
+
+ table_names = '"' + ActiveRecord::Base.connection.tables.join('","') + '"'
+
+ attempts_left = 20
+ begin
+ ActiveRecord::Base.transaction do
+ # Avoid deadlock by locking all tables before doing anything
+ # drastic.
+ ActiveRecord::Base.connection.execute \
+ "LOCK TABLE #{table_names} IN ACCESS EXCLUSIVE MODE"