Arrow_left   Arrow_right
 
  #924

SchedulerException on stopping actor

    • Created on: Tue, Jun 14 2011 (8 months ago)
    • Reported by: -
    • Assigned to: viktorklang
    • Milestone: 2.0-M1
    • Status: Fixed
    • Priority: Normal (3)
    • Component: -
    Problem:SchedulerException on ActorRef.stop
    Version: Akka 1.2-SNAPSHOT
    Reported: http://groups.google.com/group/akka-user/browse_thread/thread/c1de5b93ccdfe680

    The following exception occurs when I run a suite of tests that all stop actors on teardown. I will try to add a reproducable unit test.


    akka.actor.Scheduler$SchedulerException: TimeoutMarker(0) could not be scheduleOnce'd on Actor[akka.testkit.TestActor:1bf1baa0-a6f5-11e0-9405-0019d2b39ec9]
    at akka.actor.Scheduler$.scheduleOnce(Scheduler.scala:81)
    at akka.actor.FSM$class.applyState(FSM.scala:471)
    at akka.actor.FSM$class.makeTransition(FSM.scala:461)
    at akka.actor.FSM$class.initialize(FSM.scala:333)
    at akka.testkit.TestActor.initialize(TestKit.scala:19)
    at akka.testkit.TestActor.<init>(TestKit.scala:40)
    at akka.testkit.TestKit$$anonfun$4.apply(TestKit.scala:82)
    at akka.testkit.TestKit$$anonfun$4.apply(TestKit.scala:82)
    at akka.actor.LocalActorRef.akka$actor$LocalActorRef$$newActor(ActorRef.scala:1021)
    at akka.actor.LocalActorRef$$anonfun$3.apply(ActorRef.scala:608)
    at akka.actor.LocalActorRef$$anonfun$3.apply(ActorRef.scala:608)
    at akka.util.ReentrantGuard.withGuard(LockUtil.scala:20)
    at akka.actor.LocalActorRef.<init>(ActorRef.scala:608)
    at akka.actor.Actor$.actorOf(Actor.scala:200)
    at akka.testkit.TestKit$class.$init$(TestKit.scala:82)
    at unit.control.BroadcastSensorInstructionsTest.<init>(BroadcastSensorInstructionsTest.scala:21)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at org.scalatest.tools.ScalaTestFramework$ScalaTestRunner.run(ScalaTestFramework.scala:104)
    at sbt.TestRunner.run(TestFramework.scala:53)
    at sbt.TestRunner.runTest$1(TestFramework.scala:67)
    at sbt.TestRunner.run(TestFramework.scala:76)
    at sbt.TestFramework$$anonfun$10$$anonfun$apply$11.runTest$2(TestFramework.scala:194)
    at sbt.TestFramework$$anonfun$10$$anonfun$apply$11$$anonfun$apply$12.apply(TestFramework.scala:205)
    at sbt.TestFramework$$anonfun$10$$anonfun$apply$11$$anonfun$apply$12.apply(TestFramework.scala:205)
    at sbt.NamedTestTask.run(TestFramework.scala:92)
    at sbt.ScalaProject$$anonfun$sbt$ScalaProject$$toTask$1.apply(ScalaProject.scala:193)
    at sbt.ScalaProject$$anonfun$sbt$ScalaProject$$toTask$1.apply(ScalaProject.scala:193)
    at sbt.TaskManager$Task.invoke(TaskManager.scala:62)
    at sbt.impl.RunTask.doRun$1(RunTask.scala:77)
    at sbt.impl.RunTask.runTask(RunTask.scala:85)
    at sbt.impl.RunTask.sbt$impl$RunTask$$runIfNotRoot(RunTask.scala:60)
    at sbt.impl.RunTask$$anonfun$runTasksExceptRoot$2.apply(RunTask.scala:48)
    at sbt.impl.RunTask$$anonfun$runTasksExceptRoot$2.apply(RunTask.scala:48)
    at sbt.Distributor$Run$Worker$$anonfun$2.apply(ParallelRunner.scala:131)
    at sbt.Distributor$Run$Worker$$anonfun$2.apply(ParallelRunner.scala:131)
    at sbt.Control$.trapUnit(Control.scala:19)
    at sbt.Distributor$Run$Worker.run(ParallelRunner.scala:131)
    Caused by: java.util.concurrent.RejectedExecutionException
    at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1768)
    at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:767)
    at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:215)
    at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:397)
    at java.util.concurrent.Executors$DelegatedScheduledExecutorService.schedule(Executors.java:651)
    at akka.actor.Scheduler$.scheduleOnce(Scheduler.scala:76)
    at akka.actor.FSM$class.applyState(FSM.scala:471)
    at akka.actor.FSM$class.makeTransition(FSM.scala:461)
    at akka.actor.FSM$class.initialize(FSM.scala:333)
    at akka.testkit.TestActor.initialize(TestKit.scala:19)
    at akka.testkit.TestActor.<init>(TestKit.scala:40)
    at akka.testkit.TestKit$$anonfun$4.apply(TestKit.scala:82)
    at akka.testkit.TestKit$$anonfun$4.apply(TestKit.scala:82)
    at akka.actor.LocalActorRef.akka$actor$LocalActorRef$$newActor(ActorRef.scala:1021)
    at akka.actor.LocalActorRef$$anonfun$3.apply(ActorRef.scala:608)
    at akka.actor.LocalActorRef$$anonfun$3.apply(ActorRef.scala:608)
    at akka.util.ReentrantGuard.withGuard(LockUtil.scala:20)
    at akka.actor.LocalActorRef.<init>(ActorRef.scala:608)
    at akka.actor.Actor$.actorOf(Actor.scala:200)
    at akka.testkit.TestKit$class.$init$(TestKit.scala:82)
    at [REMOVED for protecting the innocent :)]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at org.scalatest.tools.ScalaTestFramework$ScalaTestRunner.run(ScalaTestFramework.scala:104)
    at sbt.TestRunner.run(TestFramework.scala:53)
    at sbt.TestRunner.runTest$1(TestFramework.scala:67)
    at sbt.TestRunner.run(TestFramework.scala:76)
    at sbt.TestFramework$$anonfun$10$$anonfun$apply$11.runTest$2(TestFramework.scala:194)
    at sbt.TestFramework$$anonfun$10$$anonfun$apply$11$$anonfun$apply$12.apply(TestFramework.scala:205)
    at sbt.TestFramework$$anonfun$10$$anonfun$apply$11$$anonfun$apply$12.apply(TestFramework.scala:205)
    at sbt.NamedTestTask.run(TestFramework.scala:92)
    at sbt.ScalaProject$$anonfun$sbt$ScalaProject$$toTask$1.apply(ScalaProject.scala:193)
    at sbt.ScalaProject$$anonfun$sbt$ScalaProject$$toTask$1.apply(ScalaProject.scala:193)
    at sbt.TaskManager$Task.invoke(TaskManager.scala:62)
    at sbt.impl.RunTask.doRun$1(RunTask.scala:77)
    at sbt.impl.RunTask.runTask(RunTask.scala:85)
    at sbt.impl.RunTask.sbt$impl$RunTask$$runIfNotRoot(RunTask.scala:60)
    at sbt.impl.RunTask$$anonfun$runTasksExceptRoot$2.apply(RunTask.scala:48)
    at sbt.impl.RunTask$$anonfun$runTasksExceptRoot$2.apply(RunTask.scala:48)
    at sbt.Distributor$Run$Worker$$anonfun$2.apply(ParallelRunner.scala:131)
    at sbt.Distributor$Run$Worker$$anonfun$2.apply(ParallelRunner.scala:131)
    at sbt.Control$.trapUnit(Control.scala:19)
    at sbt.Distributor$Run$Worker.run(ParallelRunner.scala:131)
  • Followers
     
    Ico-users viktorklang (Assigned To) , Peter Vlugter 
     
    Attachments
    No attachments
    Associations
     
    No associations
    Activity
     
    User picture

          on Jun 15, 2011 @ 08:02PM UTC * By viktorklang

    I need the trace of the cause of the SchedulerException as well.
    User picture

          on Jun 16, 2011 @ 04:50PM UTC * By Jonas Bonér

    Milestone set to 2.0
    Updating tickets (#915, #917, #918, #924)
    User picture

          on Jun 17, 2011 @ 02:32PM UTC * By RayRoestenburg

    Milestone changed from 2.0 to 1.2
    User picture

          on Jun 17, 2011 @ 02:33PM UTC * By RayRoestenburg

    Milestone changed from 1.2 to 2.0
    oops
    User picture

          on Jun 17, 2011 @ 02:36PM UTC * By RayRoestenburg

    This is the stacktrace that is reported, I will check if I can get more out.
    User picture

          on Jul 05, 2011 @ 06:08PM UTC * By RayRoestenburg

    Description changed from Problem:SchedulerException ... to Problem:SchedulerException ...
    Added a more complete stacktrace. this is now on version 1.1.3. It looks like something is trying to schedule a task when the scheduler is trying to shutdown, is that possible? My tests do a lot of server start and server shutdown before and after tests.
    Found this post relevant (I think the source is credible :) http://pveentjer.wordpress.com/2008/02/06/are-you-dealing-with-the-rejectedexecutionexception/
    User picture

          on Jul 10, 2011 @ 11:56PM UTC * By viktorklang

    We should probably remove both Scheduler.shutdown and Scheduler.restart
    User picture

          on Jul 12, 2011 @ 05:32PM UTC * By viktorklang

    How do you deal with a rejectedexecutionexception when something is scheduled to be run in the future? :-)

    Are you actively shutting down the Scheduler?
    User picture

          on Jul 14, 2011 @ 08:55PM UTC * By viktorklang

    Assigned to set to viktorklang
    Status changed from New to Fixed
    And this only happens for testing?

    If so, it's fixed in 2.0 since the scheduler won't be stoppable :-)
    User picture

          on Jul 20, 2011 @ 07:29PM UTC * By RayRoestenburg

    Hi Guys,

    It only happens during testing, and when I remove Scheduler.shutdown from the before/after stuff in the tests the problem doesn't occur anymore. I agree it is fixed in 2.0 (not stoppable).
    User picture

          on Jul 20, 2011 @ 07:36PM UTC * By viktorklang

    Hey Raymond,

    thanks for the feedback

    If you have any thoughts on how we can improve the Scheduler I'd love to hear them!
    User picture

          on Dec 15, 2011 @ 07:52AM UTC * By viktorklang

    Milestone changed from 2.0 to 2.0-M1
    Time Expenditure
    Loading