Frage

Wie kann ich die Anzahl der Rollbacks in meinem STM in Clojure sehen?

War es hilfreich?

Lösung

Sie können nicht ... es sei denn, Sie sind bereit zu betrügen:

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

und ersetzen Sie dann Ihre Dosync durch eine Spionagedosync.

Andere Tipps

Wenn Sie sich mürrisch fühlen, könnten Sie die Quelle der Clojure hacken und wieder aufbauen (es ist einfach Um die Quelle der Clojure wieder aufzubauen). Transaktionsüberschreitungen finden in der Methode src/jvm/clojure/lang/lockingTransaction.java statt. Es gibt eine große für die Schleife, die bis zum Abschluss oder Wiederieren_Limit geht. Der Wert von i, wenn der Schleifengänger die Wiederholungszahl sein sollte.

Es gibt STM-Stress Prüfung Geschrieben von Chris Houser, was nützlich sein könnte

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top