summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/LockingTransaction.java6
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