¿Hay algún complemento para Rails 3 (o ActiveRecord 3) que replique el antiguo deadlock_retry? O bien, ¿ese complemento todavía funciona con Rails 3?Intento de punto muerto de ActiveRecord3
Respuesta
Yo ni siquiera sabía que había un plugin para hacer esto :)
Aquí es lo que usar (pero hay que envolver las consultas de punto muerto propensas a usted mismo):
# 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
Hay es una gema transaction_retry que no solo funciona con Rails 3+ sino que es compatible con todas las bases de datos principales (MySQL, PostgreSQL y SQLite). Se comercializa como limpio y bien probado.
"reintento punto muerto permite que el adaptador de base de datos (actualmente sólo probado con el MySQLAdapter) para reintentar las transacciones que caen en punto muerto. Se volverá a intentar dichas transacciones tres veces antes de fallar.
Este la capacidad se agrega automáticamente a ActiveRecord. No hay cambios de código o de lo contrario son necesarios ".
re "Esta capacidad se agrega automáticamente a ActiveRecord" - tratando de encontrar la fuente confirmando esto, google-fu fallando en mí. ¿Puede indicarme una descripción de esto en el núcleo AR? –
Me adelgaza, tal vez lo malinterpretes --- la gema referenciada (carriles/deadlock_retry) por el póster la agrega automáticamente al registro activo –
- 1. ¿Cuándo un punto muerto no es un punto muerto?
- 2. SqlException: Punto muerto
- 3. Punto muerto del semáforo
- 4. Punto muerto en ThreadPoolExecutor
- 5. Punto muerto en ThreadPool
- 6. Cómo causar un punto muerto
- 7. Punto muerto en Ruby join()
- 8. ¿Cómo codificar la regla de punto muerto de ajedrez?
- 9. ¿Cómo encontrar AMBOS hilos de un punto muerto?
- 10. ¿Cómo provocar deliberadamente un punto muerto?
- 11. ¿Cómo puedo evitar este aparente punto muerto de EhCache?
- 12. Bloqueo de reentrada y punto muerto con Java
- 13. Diferencia entre condición de carrera y punto muerto
- 14. ¿Alguien puede explicar el punto muerto del buffer de tubería?
- 15. Cómo depurar un punto muerto en Java usando Eclipse
- 16. Patrones para manejar un punto muerto SQL en C#?
- 17. ¿Es posible que ConcurrentHashMap esté en "punto muerto"?
- 18. punto muerto en código Java con semáforo y adquirir (int)
- 19. XSL: Muerto o no muerto
- 20. ¿Advertencia de código muerto?
- 21. Depuración de un punto muerto con el comando clrstack de Windbg
- 22. ¿Hay alguna manera de hacer que NHibernate emita una pista de punto muerto?
- 23. El código multiproceso hace que las Mocks de Rhino causen un punto muerto
- 24. Cómo puedo causar un punto muerto en MySQL para propósitos de prueba
- 25. ¿Cómo puedo identificar las filas involucradas en un punto muerto de Oracle?
- 26. ¿Cómo puede la marca de tiempo causar un "punto muerto global"?
- 27. Identificación de código muerto (C++)
- 28. JavaScriptInterface en Android WebView: llamadas múltiples a JS causan un punto muerto
- 29. ¿Cómo hacer un reportero de enlace muerto?
- 30. ¿Está GLUT muerto?
Esto me salvó un dolor de cabeza. Gracias. –