Esistono plug-in per Rails 3 (o ActiveRecord 3) che replicano il vecchio plug-in deadlock_retry? Oppure, quel plugin funziona ancora con Rails 3?Errore di deadlock ActiveRecord3
risposta
Non sapevo nemmeno che ci fosse un plugin per fare questo :)
Ecco quello che usiamo (ma bisogna avvolgere le query di deadlock-inclini a voi stessi):
# Executes the given block +retries+ times (or forever, if explicitly given nil),
# catching and retrying SQL Deadlock errors.
def retry_lock_error(retries = 100, &block)
begin
yield
rescue ActiveRecord::StatementInvalid => e
if e.message =~ /Deadlock found when trying to get lock/ and (retries.nil? || retries > 0)
retry_lock_error(retries ? retries - 1 : nil, &block)
else
raise e
end
end
end
Ci è una gemma transaction_retry che funziona non solo con Rails 3+ ma supporta tutti i principali database (MySQL, PostgreSQL e SQLite). È commercializzato pulito e ben testato.
"Deadlock retry consente alla scheda di database (attualmente testato solo con il MySQLAdapter) per riprovare le operazioni che rientrano in stallo. Si ritenterà tali operazioni tre volte prima infine fallire.
Questo la funzionalità viene automaticamente aggiunta ad ActiveRecord. Non sono richieste modifiche al codice o altro. "
re "Questa funzionalità viene automaticamente aggiunta ad ActiveRecord" - cercando di trovare la fonte confermando questo, google-fu mi sta fallendo. Puoi indicarmi una descrizione di questo in AR core? –
Io sottile forse hai frainteso --- la gemma referenziata (rails/deadlock_retry) del poster aggiunge automaticamente questo al record attivo –
- 1. deadlock di blocco di C++ pthread deadlock (credo)
- 2. Quando è un deadlock non un deadlock?
- 3. HTMLUNIT v. 2.15 Blocco deadlock deadlock
- 4. deadlock SQLServer
- 5. Async Deadlock?
- 6. deadlock postgresql
- 7. GO language: errore fatale: tutte le goroutine sono addormentate - deadlock
- 8. Storia di deadlock in Oracle?
- 9. Deadlock nel sottoprocesso di Python
- 10. Deadlock in Ruby join()
- 11. Condizione deadlock variabile
- 12. java VirtualMachine.getSystemProperties() deadlock
- 13. ForkJoinPool parallelism = 1 deadlock
- 14. Deadlock su SELECT/UPDATE
- 15. ConfigureAwait (false) deadlock ancora
- 16. Problemi DeadLock in Process.StandardOutput.ReadToEnd();
- 17. contesto Deadlock degli switch
- 18. pthread_mutex_lock causa deadlock
- 19. Deadlock in ThreadPoolExecutor
- 20. c3p0 apparente eccezione DEADLOCK
- 21. due indici deadlock
- 22. deadlock thread Delphi
- 23. Sonarqube 4.5.4: deadlock Mysql
- 24. Deadlock con MPI
- 25. Perché IPC :: Open3 diventa deadlock?
- 26. Esempio di deadlock del thread in C#
- 27. Identificazione e risoluzione di Oracle ITL Deadlock
- 28. Lettura del grafico di deadlock SQL
- 29. Come eseguire il debug di un deadlock?
- 30. Entity Framework deadlock e Concurrency
Questo mi ha salvato un mal di testa. Grazie. –