Existe-t-il des plugins pour Rails 3 (ou ActiveRecord 3) qui répliquent l'ancien plugin deadlock_retry? Ou, ce plugin fonctionne-t-il toujours avec Rails 3?ActiveRecord3 deadlock retry
Répondre
Je ne savais même pas qu'il y avait un plugin pour le faire :)
Voici ce que nous utilisons (mais vous devez envelopper les requêtes sujettes à impasse dans vous-même):
# 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
Il est un gem transaction_retry qui fonctionne non seulement avec Rails 3+ mais supporte toutes les bases de données majeures (MySQL, PostgreSQL et SQLite). Il est commercialisé comme propre et bien testé.
« nouvelle tentative Deadlock permet à l'adaptateur de base de données (actuellement testé uniquement avec le MySQLAdapter) pour tenter de nouvelles transactions qui tombent dans l'impasse. Il réessaiera ces opérations trois fois avant d'échouer.
Cette La capacité est automatiquement ajoutée à ActiveRecord, aucun code n'est modifié ou est requis.
re "Cette fonctionnalité est automatiquement ajoutée à ActiveRecord" - en essayant de trouver la source confirmant cela, google-fu à défaut de moi. Pouvez-vous me montrer une description de ceci dans le noyau AR? –
Je mince peut-être vous mal compris --- la gemme référencée (rails/deadlock_retry) par l'affiche ajoute automatiquement à l'enregistrement actif –
- 1. activerecord3 Instruction IN avec tableau
- 2. Strange Deadlock (?)
- 3. C# client ftp retry delay
- 4. CURL Retry On délai d'attente
- 5. MultiThreading et Deadlock
- 6. Deadlock sur SELECT/UPDATE
- 7. Hibernate/DB2 -913 deadlock
- 8. Détection DeadLock par injection
- 9. Delphi threads deadlock
- 10. Postgresql locks deadlock
- 11. EF 4.0: Enregistrer les modifications Retry Logic
- 12. transaction de transaction commit, retry, ConcurrentModificationException
- 13. MySQL Deadlock Detection via PHP
- 14. Deadlock dans suppression de sélection
- 15. Deadlock trouvé dans MySQL (InnoDB)
- 16. Deadlock en C++ sur solaris
- 17. ThreadPool.QueueUserWorkItem nouveau formulaire CreateHandle Deadlock
- 18. xlib/xcb deadlock ou bloc
- 19. Deadlock sur tidtcpserver.active = false (Delphi2007/indy10)
- 20. Est-il possible que ConcurrentHashMap devienne "deadlock"?
- 21. Question A propos Deadlock Situation en Java
- 22. Une règle pour Checkers (drafts) Deadlock
- 23. PHP Retry Script jusqu'à la réussite ou l'erreur
- 24. PHP Retry Script jusqu'à la réussite ou l'erreur
- 25. Sql Server Deadlock ID d'objet sont trop grands
- 26. Encore une autre question de débogage Deadlock C#
- 27. Quelle est la meilleure façon de gérer ce cas "try-error-clean -retry"?
- 28. Envoyer un mail avec un adaptateur SMTP avec retry, retryinterval et notification de livraison
- 29. MySQL return Deadlock avec insertion de ligne et FK est verrouillé 'pour la mise à jour'
- 30. Oracle Deadlock lorsque l'application Hibernate charge des données pour une utilisation en lecture seule
Cela m'a juste sauvé un mal de tête. Je vous remercie. –