From 4318d68af451ebda4ca10d63c0c94d2c55dbb2ec Mon Sep 17 00:00:00 2001 From: jboner Date: Wed, 25 Nov 2009 20:37:00 +0100 Subject: [PATCH] Upgraded to latest Mulitverse SNAPSHOT --- akka-actors/src/main/scala/actor/Actor.scala | 2 +- .../src/main/scala/stm/Transaction.scala | 2 +- .../scala/stm/TransactionManagement.scala | 2 +- .../main/scala/stm/TransactionalState.scala | 2 +- .../akka/stm/AtomicTemplate.java | 19 ++++++++++++------- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/akka-actors/src/main/scala/actor/Actor.scala b/akka-actors/src/main/scala/actor/Actor.scala index 9430fb2127..86e3c1c988 100644 --- a/akka-actors/src/main/scala/actor/Actor.scala +++ b/akka-actors/src/main/scala/actor/Actor.scala @@ -21,7 +21,7 @@ import se.scalablesolutions.akka.util.Logging import org.codehaus.aspectwerkz.proxy.Uuid -import org.multiverse.utils.ThreadLocalTransaction._ +import org.multiverse.api.ThreadLocalTransaction._ /** * Mix in this trait to give an actor TransactionRequired semantics. diff --git a/akka-actors/src/main/scala/stm/Transaction.scala b/akka-actors/src/main/scala/stm/Transaction.scala index 20ea9ede9f..14c5b0d106 100644 --- a/akka-actors/src/main/scala/stm/Transaction.scala +++ b/akka-actors/src/main/scala/stm/Transaction.scala @@ -12,7 +12,7 @@ import se.scalablesolutions.akka.util.Logging import org.multiverse.api.{Stm, Transaction => MultiverseTransaction} import org.multiverse.api.GlobalStmInstance.getGlobalStmInstance -import org.multiverse.utils.ThreadLocalTransaction._ +import org.multiverse.api.ThreadLocalTransaction._ import org.multiverse.templates.OrElseTemplate import scala.collection.mutable.HashMap diff --git a/akka-actors/src/main/scala/stm/TransactionManagement.scala b/akka-actors/src/main/scala/stm/TransactionManagement.scala index 06e65d0ceb..6a3ee9abf8 100644 --- a/akka-actors/src/main/scala/stm/TransactionManagement.scala +++ b/akka-actors/src/main/scala/stm/TransactionManagement.scala @@ -10,7 +10,7 @@ import se.scalablesolutions.akka.util.Logging import scala.collection.mutable.HashSet -import org.multiverse.utils.ThreadLocalTransaction._ +import org.multiverse.api.ThreadLocalTransaction._ class StmException(msg: String) extends RuntimeException(msg) diff --git a/akka-actors/src/main/scala/stm/TransactionalState.scala b/akka-actors/src/main/scala/stm/TransactionalState.scala index de3b97e794..bd89a41224 100644 --- a/akka-actors/src/main/scala/stm/TransactionalState.scala +++ b/akka-actors/src/main/scala/stm/TransactionalState.scala @@ -74,7 +74,7 @@ object TransactionalRef { * @author Jonas Bonér */ class TransactionalRef[T] extends Transactional { - import org.multiverse.utils.ThreadLocalTransaction._ + import org.multiverse.api.ThreadLocalTransaction._ private[this] val ref: Ref[T] = atomic { new Ref } diff --git a/akka-util-java/src/main/java/se/scalablesolutions/akka/stm/AtomicTemplate.java b/akka-util-java/src/main/java/se/scalablesolutions/akka/stm/AtomicTemplate.java index d01d1c12a4..a693ff1248 100644 --- a/akka-util-java/src/main/java/se/scalablesolutions/akka/stm/AtomicTemplate.java +++ b/akka-util-java/src/main/java/se/scalablesolutions/akka/stm/AtomicTemplate.java @@ -1,16 +1,18 @@ package se.scalablesolutions.akka.stm; -import org.multiverse.templates.AbortedException; +import static org.multiverse.api.GlobalStmInstance.getGlobalStmInstance; import org.multiverse.api.Stm; +import static org.multiverse.api.ThreadLocalTransaction.getThreadLocalTransaction; +import static org.multiverse.api.ThreadLocalTransaction.setThreadLocalTransaction; import org.multiverse.api.Transaction; import org.multiverse.api.TransactionStatus; import org.multiverse.api.exceptions.CommitFailureException; import org.multiverse.api.exceptions.LoadException; import org.multiverse.api.exceptions.RetryError; import org.multiverse.api.exceptions.TooManyRetriesException; -import static org.multiverse.api.GlobalStmInstance.getGlobalStmInstance; -import static org.multiverse.utils.ThreadLocalTransaction.getThreadLocalTransaction; -import static org.multiverse.utils.ThreadLocalTransaction.setThreadLocalTransaction; +import org.multiverse.templates.AbortedException; +import org.multiverse.utils.latches.CheapLatch; +import org.multiverse.utils.latches.Latch; import static java.lang.String.format; import java.util.logging.Logger; @@ -259,7 +261,9 @@ public abstract class AtomicTemplate { postCommit(); return result; } catch (RetryError e) { - t.abortAndWaitForRetry(); + Latch latch = new CheapLatch(); + t.abortAndRegisterRetryLatch(latch); + latch.awaitUninterruptible(); //since the abort is already done, no need to do it again. abort = false; } catch (CommitFailureException ex) { @@ -274,7 +278,8 @@ public abstract class AtomicTemplate { if (abort) { t.abort(); if (reset) { - t.restart(); + t = t.abortAndReturnRestarted(); + setTransaction(t); } } } @@ -333,4 +338,4 @@ public abstract class AtomicTemplate { return (Exception) super.getCause(); } } -} \ No newline at end of file +}