Question

Comment puis-je voir le nombre de rollbacks dans ma STM Clojure?

Était-ce utile?

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.

Il est STM stress test écrit par Chris Houser qui pourrait être utile

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top