Czy są jakieś wtyczki dla Rails 3 (lub ActiveRecord 3), które replikują starą wtyczkę deadlock_retry? Czy ta wtyczka nadal działa z Rails 3?Zakleszczenie impulsu ActiveRecord3
Odpowiedz
ja nawet nie wiem, nie było wtyczki do tego :)
Tutaj robić to co używamy (ale trzeba owinąć zapytań impasu podatnych na to sam):
# 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
There jest klejnotem transaction_retry, który nie tylko działa z Railsami 3+, ale obsługuje wszystkie główne bazy danych (MySQL, PostgreSQL i SQLite). Jest sprzedawany jako czysty i dobrze przetestowany.
„Deadlock ponawiania umożliwia adapter bazy danych (obecnie tylko przetestowane z MySQLAdapter), aby ponowić próbę transakcji, które mieszczą się w martwym punkcie. Będzie ponowić takich transakcji trzy razy, zanim ostatecznie niepowodzeniem.
ten Funkcja jest automatycznie dodawana do ActiveRecord i nie wymaga żadnych zmian kodu. "
re "Ta funkcja jest automatycznie dodawana do ActiveRecord" - próbuje znaleźć źródło potwierdzające to, google-fu mnie zawodzi. Czy możesz wskazać mi na opis tego w rdzeniu AR? –
Cienki, być może źle zrozumiałeś - odnośnik do klejnotu (tory/deadlock_retry) przez plakat automatycznie dodaje go do aktywnego rekordu –
- 1. Powtórzenie impulsu Animacja
- 2. zakleszczenie postgresql
- 3. Zakleszczenie asynchroniczne?
- 4. płynne przewijanie/przewijanie inercyjne/przewijanie impulsu
- 5. Rozprzestrzenianie impulsu plotowania Matplotlib w 3d
- 6. Jak celowo spowodować zakleszczenie?
- 7. Zakleszczenie w ThreadPoolExecutor
- 8. Zakleszczenie java VirtualMachine.getSystemProperties()
- 9. Sonarqube 4.5.4: Zakleszczenie MySQL
- 10. Zakleszczenie w Ruby join()
- 11. Zakleszczenie zmiennej stanu
- 12. Zakleszczenie na SELECT/UPDATE
- 13. Zakleszczenie Java w ClassLoaders
- 14. Zakleszczenie w klasie puli obiektów
- 15. Możliwy zakleszczenie przy wywołaniu FreeLibrary
- 16. Przewijanie w pionie w iOS Safari Przyklejony (bez impulsu)
- 17. Jak utworzyć zakleszczenie w Grand Central Dispatch?
- 18. Zakleszczenie w jednym wątku programu java
- 19. Zakleszczenie odświeżania metadanych (wiosna-bezpieczeństwo-saml)
- 20. Zatrzymanie Java i powiadamianie sprawia, że zakleszczenie
- 21. Dostęp do [PFUser CurrentUser] powodując zakleszczenie
- 22. Pozorny zakleszczenie C3P0, gdy nici są puste?
- 23. Zakleszczenie SQL .. w trybie pojedynczego użytkownika teraz
- 24. Czy wywołanie funkcji WSAStartup() z kilku wątków może spowodować zakleszczenie?
- 25. Używanie OpenMP i Eigen powoduje nieskończoną pętlę/zakleszczenie.
- 26. Równoległy wątek wątku zapytań był zaangażowany w zakleszczenie
- 27. Zakleszczenie, gdy wątek roboczy próbuje wywołać coś w głównym wątku
- 28. Zakleszczenie MySQL 5.6 do blokowania tych samych wierszy dwa razy?
- 29. Zakleszczenie podczas łączenia funkcji zdalnej domeny aplikacji i zadań
- 30. Zakleszczenie między dispatch_sync w głównej kolejce i executeFetchRequest: error:
To właśnie uratowało mi ból głowy. Dziękuję Ci. –