Как я могу увидеть количество откатов в моем STM в Clojure? - PullRequest
13 голосов
/ 25 января 2011

Как узнать количество откатов в моем STM в Clojure?

Ответы [ 3 ]

17 голосов
/ 25 января 2011

Вы не можете ... если вы не готовы обмануть:

(defmacro spy-dosync [& body]
  `(let [retries# (atom -1)
         result# (dosync
                   (swap! retries# inc)
                   ~@body)]
     (println "retries count:" @retries#)
     result#))

и затем замените свою досинхронизацию шпионской дозинкейкой.

5 голосов
/ 25 января 2011

Если вы чувствуете себя резвым, вы можете взломать источник Clojure и восстановить его ( просто восстановить исходный код Clojure). Попытки транзакции происходят в src / jvm / clojure / lang / LockingTransaction.java в методе run (). Там есть большой цикл for, который идет до завершения или RETRY_LIMIT. Значение i при выходе из цикла должно быть числом повторов.

2 голосов
/ 26 января 2011

Существует STM-стресс тест , написанный Крисом Хаузером, который может быть полезен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...