Comment puis-je voir le nombre de rollbacks dans ma STM en Clojure?
Question
Comment puis-je voir le nombre de rollbacks dans ma STM Clojure?
La solution
Vous ne pouvez pas ... à moins que vous êtes prêt à tricher:
(defmacro spy-dosync [& body]
`(let [retries# (atom -1)
result# (dosync
(swap! retries# inc)
~@body)]
(println "retries count:" @retries#)
result#))
puis remplacer votre DoSync par un espion DoSync.
Autres conseils
Si vous êtes fringant sentiment, vous pouvez pirater la source Clojure et la reconstruction (il est facile de reconstruire la source Clojure). retries de transaction se produisent dans src / jvm / clojure / lang / LockingTransaction.java dans la méthode run (). Il y a une grande boucle qui va là jusqu'à ce que fait ou RETRY_LIMIT. La valeur de i lorsque les sorties de la boucle doit être le nombre de nouvelles tentatives.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow