SchedulerException on stopping actor
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)
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)
Leave a comment
on 2011-06-15 09:02 *
By viktorklang
I need the trace of the cause of the SchedulerException as well.
oops
on 2011-06-17 03:36 *
By
This is the stacktrace that is reported, I will check if I can get more out.
on 2011-07-05 07:08 *
By
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/
Found this post relevant (I think the source is credible :) http://pveentjer.wordpress.com/2008/02/06/are-you-dealing-with-the-rejectedexecutionexception/
on 2011-07-10 12:56 *
By viktorklang
We should probably remove both Scheduler.shutdown and Scheduler.restart
on 2011-07-12 06:32 *
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?
Are you actively shutting down the Scheduler?
on 2011-07-14 09:55 *
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 :-)
If so, it's fixed in 2.0 since the scheduler won't be stoppable :-)
on 2011-07-20 08:29 *
By
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).
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).
on 2011-07-20 08:36 *
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!
thanks for the feedback
If you have any thoughts on how we can improve the Scheduler I'd love to hear them!
Updating tickets (#818, #821, #823, #836, #842, #854, #856, #865, #866, #867, #868, #869, #871, #872, #873, #877, #878, #879, #885, #888, #889, #890, #894, #910, #911, #917, #923, #924, #925, #926, #927, #928, #930, #931, #932, #933, #934, #936, #937, #952, #955, #957, #958, #959, #960, #961, #964, #965, #966)