qertoip / transaction_retry

Retries database transaction on deadlock and transaction serialization errors. Supports MySQL, PostgreSQL and SQLite.
MIT License
116 stars 42 forks source link

Does not work with ruby 3.0 #12

Open aka47 opened 3 years ago

aka47 commented 3 years ago

Ruby 3 has a strict handling of keyword arguments and transaction isolation does break with it

ArgumentError: wrong number of arguments (given 2, expected 1; required keywords: message, sql, binds) vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.4/lib/active_record/connection_adapters/mysql2_adapter.rb:155:in translate_exception' vendor/bundle/ruby/3.0.0/gems/transaction_isolation-1.0.5/lib/transaction_isolation/active_record/connection_adapters/mysql2_adapter.rb:59:intranslate_exception_with_transaction_isolation_conflict' vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:679:in translate_exception_class' vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:699:inrescue in block in log' vendor/bundle/ruby/3.0.0/gems/activerecord-6.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:695:in block in log' vendor/bundle/ruby/3.0.0/gems/activesupport-6.1.4/lib/active_support/notifications/instrumenter.rb:24:ininstrument'