Merge branch 'wip-remove-timeout-jboner' into master
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
This commit is contained in:
commit
a18206b81a
28 changed files with 96 additions and 61 deletions
|
|
@ -1,6 +1,6 @@
|
|||
package akka.dispatch;
|
||||
|
||||
import akka.actor.Timeout;
|
||||
import akka.util.Timeout;
|
||||
import akka.actor.ActorSystem;
|
||||
|
||||
import akka.japi.*;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import org.scalatest.WordSpec
|
|||
import org.scalatest.matchers.MustMatchers
|
||||
|
||||
import akka.testkit._
|
||||
import akka.util.Timeout
|
||||
import akka.util.duration._
|
||||
import java.lang.IllegalStateException
|
||||
import akka.util.ReflectiveAccess
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import akka.testkit.AkkaSpec
|
|||
import akka.testkit.DefaultTimeout
|
||||
import java.util.concurrent.TimeoutException
|
||||
import akka.dispatch.Await
|
||||
import akka.util.Timeout
|
||||
|
||||
@org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner])
|
||||
class ActorTimeoutSpec extends AkkaSpec with BeforeAndAfterAll with DefaultTimeout {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ package akka.actor
|
|||
|
||||
import akka.testkit._
|
||||
import akka.util.duration._
|
||||
import akka.util.Timeout
|
||||
import akka.dispatch.{ Await, Future }
|
||||
|
||||
@org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner])
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ package akka.actor
|
|||
|
||||
import org.scalatest.{ BeforeAndAfterAll, BeforeAndAfterEach }
|
||||
import akka.util.Duration
|
||||
import akka.util.Timeout
|
||||
import akka.util.duration._
|
||||
import akka.serialization.Serialization
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ package akka.actor.dispatch
|
|||
import org.scalatest.Assertions._
|
||||
import akka.testkit._
|
||||
import akka.dispatch._
|
||||
import akka.util.Timeout
|
||||
import java.util.concurrent.atomic.AtomicLong
|
||||
import java.util.concurrent.{ ConcurrentHashMap, CountDownLatch, TimeUnit }
|
||||
import akka.util.Switch
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package akka.dispatch
|
|||
|
||||
import Future.flow
|
||||
import akka.util.cps._
|
||||
import akka.actor.Timeout
|
||||
import akka.util.Timeout
|
||||
import akka.util.duration._
|
||||
import akka.testkit.AkkaSpec
|
||||
import akka.testkit.DefaultTimeout
|
||||
|
|
|
|||
|
|
@ -113,32 +113,6 @@ object Status {
|
|||
case class Failure(cause: Throwable) extends Status
|
||||
}
|
||||
|
||||
case class Timeout(duration: Duration) {
|
||||
def this(timeout: Long) = this(Duration(timeout, TimeUnit.MILLISECONDS))
|
||||
def this(length: Long, unit: TimeUnit) = this(Duration(length, unit))
|
||||
}
|
||||
|
||||
object Timeout {
|
||||
/**
|
||||
* A timeout with zero duration, will cause most requests to always timeout.
|
||||
*/
|
||||
val zero = new Timeout(Duration.Zero)
|
||||
|
||||
/**
|
||||
* A Timeout with infinite duration. Will never timeout. Use extreme caution with this
|
||||
* as it may cause memory leaks, blocked threads, or may not even be supported by
|
||||
* the receiver, which would result in an exception.
|
||||
*/
|
||||
val never = new Timeout(Duration.Inf)
|
||||
|
||||
def apply(timeout: Long) = new Timeout(timeout)
|
||||
def apply(length: Long, unit: TimeUnit) = new Timeout(length, unit)
|
||||
|
||||
implicit def durationToTimeout(duration: Duration) = new Timeout(duration)
|
||||
implicit def intToTimeout(timeout: Int) = new Timeout(timeout)
|
||||
implicit def longToTimeout(timeout: Long) = new Timeout(timeout)
|
||||
}
|
||||
|
||||
trait ActorLogging { this: Actor ⇒
|
||||
val log = akka.event.Logging(context.system.eventStream, context.self)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,8 +6,12 @@ package akka.actor
|
|||
|
||||
import java.util.concurrent.atomic.AtomicLong
|
||||
import org.jboss.netty.akka.util.{ TimerTask, HashedWheelTimer }
|
||||
import akka.util.Timeout
|
||||
import akka.util.Timeout.intToTimeout
|
||||
import akka.config.ConfigurationException
|
||||
import akka.dispatch._
|
||||
import akka.routing._
|
||||
import akka.util.Timeout
|
||||
import akka.AkkaException
|
||||
import akka.util.{ Duration, Switch, Helpers }
|
||||
import akka.event._
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ import akka.actor._
|
|||
import akka.event._
|
||||
import akka.dispatch._
|
||||
import akka.util.duration._
|
||||
import akka.util.Timeout
|
||||
import akka.util.Timeout._
|
||||
import org.jboss.netty.akka.util.HashedWheelTimer
|
||||
import java.util.concurrent.TimeUnit.MILLISECONDS
|
||||
import java.util.concurrent.TimeUnit.NANOSECONDS
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ package akka.actor
|
|||
|
||||
import akka.japi.{ Creator, Option ⇒ JOption }
|
||||
import java.lang.reflect.{ InvocationTargetException, Method, InvocationHandler, Proxy }
|
||||
import akka.util.{ Duration }
|
||||
import akka.util.{ Duration, Timeout }
|
||||
import java.util.concurrent.atomic.{ AtomicReference ⇒ AtomVar }
|
||||
import akka.serialization.{ Serializer, Serialization }
|
||||
import akka.dispatch._
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ package akka.dispatch
|
|||
|
||||
import akka.AkkaException
|
||||
import akka.event.Logging.Error
|
||||
import akka.actor.Timeout
|
||||
import akka.util.Timeout
|
||||
import scala.Option
|
||||
import akka.japi.{ Procedure, Function ⇒ JFunc, Option ⇒ JOption }
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ package akka.dispatch
|
|||
import java.util.concurrent.atomic.AtomicReference
|
||||
import scala.util.continuations._
|
||||
import scala.annotation.{ tailrec }
|
||||
import akka.actor.Timeout
|
||||
import akka.util.Timeout
|
||||
|
||||
object PromiseStream {
|
||||
def apply[A]()(implicit dispatcher: MessageDispatcher, timeout: Timeout): PromiseStream[A] = new PromiseStream[A]
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
package akka.dispatch.japi
|
||||
|
||||
import akka.actor.Timeout
|
||||
import akka.util.Timeout
|
||||
import akka.japi.{ Procedure2, Procedure, Function ⇒ JFunc, Option ⇒ JOption }
|
||||
|
||||
/* Java API */
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import akka.util.ReflectiveAccess
|
|||
import akka.config.ConfigurationException
|
||||
import akka.util.ReentrantGuard
|
||||
import akka.util.duration._
|
||||
import akka.actor.Timeout
|
||||
import akka.util.Timeout
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import akka.actor.ActorRefProvider
|
||||
import scala.util.control.NoStackTrace
|
||||
|
|
|
|||
|
|
@ -4,12 +4,11 @@
|
|||
package akka.routing
|
||||
|
||||
import akka.actor._
|
||||
|
||||
import akka.japi.Creator
|
||||
import java.lang.reflect.InvocationTargetException
|
||||
import akka.config.ConfigurationException
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import akka.util.ReflectiveAccess
|
||||
import akka.util.{ ReflectiveAccess, Timeout }
|
||||
import akka.AkkaException
|
||||
import scala.collection.JavaConversions._
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
|
|
|||
|
|
@ -543,3 +543,29 @@ class DurationDouble(d: Double) {
|
|||
def day[C, CC <: Classifier[C]](c: C)(implicit ev: CC): CC#R = ev.convert(Duration(d, DAYS))
|
||||
}
|
||||
|
||||
case class Timeout(duration: Duration) {
|
||||
def this(timeout: Long) = this(Duration(timeout, TimeUnit.MILLISECONDS))
|
||||
def this(length: Long, unit: TimeUnit) = this(Duration(length, unit))
|
||||
}
|
||||
|
||||
object Timeout {
|
||||
/**
|
||||
* A timeout with zero duration, will cause most requests to always timeout.
|
||||
*/
|
||||
val zero = new Timeout(Duration.Zero)
|
||||
|
||||
/**
|
||||
* A Timeout with infinite duration. Will never timeout. Use extreme caution with this
|
||||
* as it may cause memory leaks, blocked threads, or may not even be supported by
|
||||
* the receiver, which would result in an exception.
|
||||
*/
|
||||
val never = new Timeout(Duration.Inf)
|
||||
|
||||
def apply(timeout: Long) = new Timeout(timeout)
|
||||
def apply(length: Long, unit: TimeUnit) = new Timeout(length, unit)
|
||||
|
||||
implicit def durationToTimeout(duration: Duration) = new Timeout(duration)
|
||||
implicit def intToTimeout(timeout: Int) = new Timeout(timeout)
|
||||
implicit def longToTimeout(timeout: Long) = new Timeout(timeout)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package akka.util
|
|||
|
||||
import scala.util.continuations._
|
||||
import akka.dispatch.MessageDispatcher
|
||||
import akka.actor.Timeout
|
||||
import akka.util.Timeout
|
||||
|
||||
package object cps {
|
||||
def matchC[A, B, C, D](in: A)(pf: PartialFunction[A, B @cpsParam[C, D]]): B @cpsParam[C, D] = pf(in)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package akka.camel;
|
|||
import akka.actor.Actor;
|
||||
import akka.actor.TypedActor;
|
||||
import akka.actor.Props;
|
||||
import akka.actor.Timeout;
|
||||
import akka.util.Timeout;
|
||||
import akka.dispatch.Dispatchers;
|
||||
import akka.japi.SideEffect;
|
||||
import akka.util.FiniteDuration;
|
||||
|
|
|
|||
|
|
@ -296,11 +296,15 @@ If the actor does not complete the future, it will expire after the timeout peri
|
|||
which is taken from one of the following locations in order of precedence:
|
||||
|
||||
#. explicitly given timeout as in ``actor.?("hello")(timeout = 12 millis)``
|
||||
#. implicit argument of type :class:`akka.actor.Timeout`, e.g.
|
||||
#. implicit argument of type :class:`akka.util.Timeout`, e.g.
|
||||
|
||||
::
|
||||
|
||||
<<<<<<< HEAD
|
||||
import akka.actor.Timeout
|
||||
=======
|
||||
import akka.util.Timeout
|
||||
>>>>>>> wip-remove-timeout-jboner
|
||||
import akka.util.duration._
|
||||
|
||||
implicit val timeout = Timeout(12 millis)
|
||||
|
|
@ -407,9 +411,14 @@ object.
|
|||
Stopping actors
|
||||
===============
|
||||
|
||||
<<<<<<< HEAD
|
||||
Actors are stopped by invoking the ``stop`` method of the ``ActorContext``
|
||||
for child actors or ``stop`` method of the ``ActorSystem`` for top level
|
||||
actors. The actual termination of the actor is performed asynchronously, i.e.
|
||||
=======
|
||||
Actors are stopped by invoking the ``stop`` method of the ``ActorRef``.
|
||||
The actual termination of the actor is performed asynchronously, i.e.
|
||||
>>>>>>> wip-remove-timeout-jboner
|
||||
``stop`` may return before the actor is stopped.
|
||||
|
||||
.. code-block:: scala
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ In this example, if an ``ArithmeticException`` was thrown while the ``Actor`` pr
|
|||
Timeouts
|
||||
--------
|
||||
|
||||
Waiting forever for a ``Future`` to be completed can be dangerous. It could cause your program to block indefinitly or produce a memory leak. ``Future`` has support for a timeout already builtin with a default of 5 seconds (taken from :ref:`configuration`). A timeout is an instance of ``akka.actor.Timeout`` which contains an ``akka.util.Duration``. A ``Duration`` can be finite, which needs a length and unit type, or infinite. An infinite ``Timeout`` can be dangerous since it will never actually expire.
|
||||
Waiting forever for a ``Future`` to be completed can be dangerous. It could cause your program to block indefinitly or produce a memory leak. ``Future`` has support for a timeout already builtin with a default of 5 seconds (taken from :ref:`configuration`). A timeout is an instance of ``akka.util.Timeout`` which contains an ``akka.util.Duration``. A ``Duration`` can be finite, which needs a length and unit type, or infinite. An infinite ``Timeout`` can be dangerous since it will never actually expire.
|
||||
|
||||
A different ``Timeout`` can be supplied either explicitly or implicitly when a ``Future`` is created. An implicit ``Timeout`` has the benefit of being usable by a for-comprehension as well as being picked up by any methods looking for an implicit ``Timeout``, while an explicit ``Timeout`` can be used in a more controlled manner.
|
||||
|
||||
|
|
@ -262,7 +262,7 @@ Implicit ``Timeout`` example:
|
|||
|
||||
.. code-block:: scala
|
||||
|
||||
import akka.actor.Timeout
|
||||
import akka.util.Timeout
|
||||
import akka.util.duration._
|
||||
|
||||
implicit val longTimeout = Timeout(1 minute)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,10 @@ package akka.remote
|
|||
|
||||
import akka.actor._
|
||||
import akka.dispatch._
|
||||
import akka.event.Logging
|
||||
import akka.util.duration._
|
||||
import akka.util.Timeout
|
||||
import akka.config.ConfigurationException
|
||||
import akka.event.{ DeathWatch, Logging }
|
||||
import akka.serialization.Compression.LZF
|
||||
import akka.remote.RemoteProtocol._
|
||||
import akka.remote.RemoteProtocol.RemoteSystemDaemonMessageType._
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import akka.actor._
|
|||
import akka.stm._
|
||||
import akka.japi.{ Function ⇒ JFunc, Procedure ⇒ JProc }
|
||||
import akka.dispatch._
|
||||
import akka.util.Timeout
|
||||
|
||||
/**
|
||||
* Used internally to send functions.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package akka.agent.test
|
|||
import org.scalatest.WordSpec
|
||||
import org.scalatest.matchers.MustMatchers
|
||||
import akka.actor.ActorSystem
|
||||
import akka.actor.Timeout
|
||||
import akka.util.Timeout
|
||||
import akka.agent.Agent
|
||||
import akka.stm._
|
||||
import akka.util.Duration
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import akka.actor.ActorSystem
|
|||
import akka.actor._
|
||||
import akka.stm.{ Ref, TransactionFactory }
|
||||
import akka.util.duration._
|
||||
import akka.util.Timeout
|
||||
import akka.testkit._
|
||||
import akka.dispatch.Await
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import org.scalatest.matchers.MustMatchers
|
|||
import org.scalatest.BeforeAndAfterAll
|
||||
import akka.actor.ActorSystem
|
||||
import akka.actor._
|
||||
import akka.util.Timeout
|
||||
import akka.stm._
|
||||
import akka.util.duration._
|
||||
import akka.testkit._
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import org.scalatest.matchers.MustMatchers
|
|||
|
||||
import akka.actor.ActorSystem
|
||||
import akka.actor._
|
||||
import akka.util.Timeout
|
||||
import akka.stm._
|
||||
import akka.util.duration._
|
||||
import akka.testkit._
|
||||
|
|
|
|||
|
|
@ -5,8 +5,17 @@
|
|||
package akka.tutorial.first.java;
|
||||
|
||||
//#imports
|
||||
import akka.actor.*;
|
||||
import akka.routing.RoundRobinRouter;
|
||||
import akka.actor.Props;
|
||||
import akka.actor.ActorRef;
|
||||
import akka.actor.ActorSystem;
|
||||
import akka.actor.InternalActorRef;
|
||||
import akka.actor.UntypedActor;
|
||||
import akka.actor.UntypedActorFactory;
|
||||
import akka.japi.Creator;
|
||||
import akka.routing.*;
|
||||
import akka.util.Timeout;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
//#imports
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue