В rails3 / jruby что может вызывать эту ошибку периодически? SAVEPOINT active_record_1 не существует - PullRequest
5 голосов
/ 08 декабря 2011

Эти ошибки не возникают, когда один человек тестирует систему. Но с помощью теста jmeter я могу довольно надежно воспроизвести несколько ошибок по типу:

ActiveRecord::JDBCError: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1

Stack:

    gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract_adapter.rb:207:in `log'
    gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract_adapter.rb:200:in `log'
    gems/gems/activerecord-jdbc-adapter-1.2.1/lib/arjdbc/jdbc/adapter.rb:208:in `execute'
    gems/gems/activerecord-jdbc-adapter-1.2.1/lib/arjdbc/mysql/adapter.rb:156:in `rollback_to_savepoint'
    gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:179:in `transaction'
    gems/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/database_statements.rb:171:in `transaction'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:207:in `transaction'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:290:in `with_transaction_returning_status'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:240:in `save'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:251:in `rollback_active_record_state!'
    gems/gems/activerecord-3.0.10/lib/active_record/transactions.rb:239:in `save'
    ...(our code that simply calls save on a new instance of a model class)...

Мы не вкладываем транзакции и даже не используем их явно. Я нашел одну существующую ошибку вокруг этого сообщения об ошибке, но она не имеет отношения к делу; мы не усекаем и не делаем какую-либо работу DDL. Просто создать запись и сохранить ее.

Мы используем Rails 3.0.10, JRuby 1.6.5, activerecord-jdbcmysql-adapter, совместимые с Warbler 1.3.2 и развернутые через Elastic Beanstalk на 64-битном Tomcat 7 / Amazon RDS с одним экземпляром Mysql v5.1.57 , Мы настроены на config.threadsafe! - и это похоже на гонку в недрах ActiveRecord - но ActiveRecord должен работать в потоке безопасно, нет?

И последнее замечание: я боюсь, что это проблема JRuby или Warbler, потому что мы не сможем воспроизвести эту проблему, если переключимся с JRuby на MRI Ruby 1.9.

1 Ответ

1 голос
/ 08 декабря 2011

Может быть связано с этим коммитом , который был представлен в 1.2.1.1.2.0 дает ли вам ту же проблему?

Может быть, мне нужно повторно ввести проверку ошибок для поддерживаемых транзакций или неудачных транзакций.Заботьтесь, чтобы сообщить об ошибке в https://github.com/jruby/activerecord-jdbc-adapter/issues? Спасибо.

...