diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jvm/clojure/lang/LockingTransaction.java | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/LockingTransaction.java b/src/jvm/clojure/lang/LockingTransaction.java index 2d778261..ab69e223 100644 --- a/src/jvm/clojure/lang/LockingTransaction.java +++ b/src/jvm/clojure/lang/LockingTransaction.java @@ -434,6 +434,12 @@ void doEnsure(Ref ref){ return; ref.lock.readLock().lock(); + //someone completed a write after our snapshot + if(ref.tvals != null && ref.tvals.point > readPoint) { + ref.lock.readLock().unlock(); + throw retryex; + } + Info refinfo = ref.tinfo; //writer exists |