Questi errori non si verificano quando un singolo individuo testa il sistema. Ma con un test JMeter, posso abbastanza affidabile riproduco alcuni errori lungo le linee di:In rails3/jruby, cosa potrebbe causare questo errore in modo intermittente? SAVEPOINT active_record_1 non esiste
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)...
Noi non siamo le operazioni di nidificazione o anche utilizzando in modo esplicito. Trovo un bug esistente attorno a questo messaggio di errore, ma non è rilevante; non stiamo troncando o facendo alcun lavoro DDL. Creare semplicemente un record e salvarlo.
Usiamo Rails 3.0.10, JRuby 1.6.5, activerecord-jdbcmysql adattatore, gorgheggiava con silvia 1.3.2 e distribuito tramite elastico Beanstalk a 64 bit Tomcat 7/Amazon RDS con una singola istanza Mysql, v5. 1.57. Siamo pronti per config.threadsafe! - e questo sembra una razza di qualche tipo nelle viscere di ActiveRecord - ma ActiveRecord dovrebbe funzionare in modo sicuro, no?
Un'ultima nota: temo che si tratti di un problema JRuby o Warbler, perché non possiamo riprodurre questo problema se passiamo da JRuby a MRI Ruby 1.9.
Questo suona stupido, ma ho avuto questo errore mi è capitato quando ho esaurito lo spazio su disco. test.log ha mostrato 'SAVEPOINT active_record_1',' INSERT INTO ... '=>' SQLite3 :: FullException: il database o il disco è pieno', 'ROLLBACK TO SAVEPOINT active_record_1' =>' SQLite3 :: SQLException: no tale savepoint'. (Il motivo era il raffinamento dei dati di selenio in/tmp.) –