Как я могу увидеть количество откатов в моей STM в Clojure?

StackOverflow https://stackoverflow.com/questions/4792197

  •  24-10-2019
  •  | 
  •  

Вопрос

Как я могу увидеть количество откатов в моей 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-стресс тест написано Крисом Хаузером, который может быть полезен

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top