Как я могу увидеть количество откатов в моей STM в Clojure?
Вопрос
Как я могу увидеть количество откатов в моей STM в Clojure?
Решение
Вы не можете ... если вы не хотите обмануть:
(defmacro spy-dosync [& body]
`(let [retries# (atom -1)
result# (dosync
(swap! retries# inc)
~@body)]
(println "retries count:" @retries#)
result#))
а затем замените свой досинхрон на шпионском досинхре.
Другие советы
Если вы чувствуете себя резким, вы можете взломать источник и восстановить Clojure (это легкий Чтобы восстановить источник Clojure). Транзакция передается в SRC/JVM/Clojure/Lang/LockingTransaction.java в методе run (). Там есть большой для петли, который идет до готовности или retry_limit. Значение i, когда петля выходит, должно быть подсчетом повторной попытки.
Есть STM-стресс тест написано Крисом Хаузером, который может быть полезен
Не связан с StackOverflow