한 명의 개인이 시스템을 테스트 할 때 이러한 오류가 발생하지 않습니다. 그러나 JMeter를 테스트로, 나는 꽤 신뢰성의 라인을 따라 몇 가지 오류를 재현 할 수 있습니다 :rails3/jruby에서이 오류가 간헐적으로 발생할 수있는 원인은 무엇입니까? SAVEPOINT active_record_1이 (가) 없습니다.
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 작업을 잘라내거나 수행하지 않습니다. 레코드를 작성하고 저장하는 것입니다.
우리는 레일즈 3.0.10, JRuby 1.6.5, 액티브 레코드 -jdbcmysql- 어댑터를 Warbler 1.3.2와 함께 사용하고 단일 Mysql 인스턴스 인 v5를 사용하여 64 비트 Tomcat 7/Amazon RDS의 Elastic Beanstalk을 통해 배포했습니다. 1.57. config.threadsafe가 설정되었습니다! - 그리고 이것은 ActiveRecord의 내부에서 어떤 종류의 경주와 같은 느낌입니다. 그러나 ActiveRecord는 threadsafe에서 작동해야합니다.
마지막주의 사항 : JRuby에서 MRI Ruby 1.9로 전환하면이 문제를 재현 할 수 없기 때문에 이것은 JRuby 또는 Warbler 문제입니다.
이것은 바보 같지만 디스크 공간이 부족하면이 오류가 발생했습니다. test.log는'SAVEPOINT active_record_1','INSERT INTO ...'=>'SQLite3 :: FullException : 데이터베이스 또는 디스크가 꽉 찼습니다. ','ROLLBACK TO SAVEPOINT active_record_1' =>'SQLite3 :: SQLException : no such savepoint'를 보여줍니다. (이유는/tmp에 낡은 Selenium 데이터가 누적되었습니다.) –