Commit graph

124 commits

Author SHA1 Message Date
Roland
f46c6dc533 introducing: MainBus feat. LoggingBus
most tests passing, everything compiling, but docs not updated and nasty
thread-leak preventing me from running the whole test-suite (which is
the reason for this commit: I want to chase down that one first).

- the app.mainbus is classified by Class[_] (currently lookup, will
  possibly change to sub-class-aware) and accepts AnyRef messages
- LoggingBus handles akka.event-handlers from config specially:
  + start them as system services, supervised by SystemGuardian
  + keep their subscriptions in sync when logLevel_= is called
  + send them InitializeLogger(bus) message before subscribing them (so
    they can register for extras like Mute/UnMute)
- two-phased start-up: first phase with actor-less stdout logging, then
  subscription of config loggers, then remove stdout logger (logLevels
  configurable separately)
- MainBusReaper watches registered receivers and unsubscribes them upon
  death (started in phase 2)
- logger factory on Logging object, needs app/bus and log source;
  default instance in app.log
2011-10-27 12:36:22 +02:00
Roland
3b62873e2c fix CallingThreadDispatcher’s assumption of mailbox type
- usually it’s a CallingThreadMailbox, but
- it is swapped out for deadLetter upon stop()
- so use Option[CallingThreadMailbox]
2011-10-26 14:20:02 +02:00
Roland
6bcdba40c0 fix InterruptedException handling in CallingThreadDispatcher
instead of just re-setting the flag upon swallowed exception, clear the
flag when fully done and re-throw last swallowed IE.
2011-10-25 15:07:20 +02:00
Roland
fc8ab7dad8 fix CallingThreadDispatcher and re-enable its test 2011-10-21 18:47:44 +02:00
Roland
bb942750aa make most AkkaSpec-based tests runnable in Eclipse 2011-10-21 17:01:22 +02:00
Roland
d55f02e6c1 merge master into parental-supervision, fixing up resulting breakage 2011-10-21 15:11:43 +02:00
Roland
3b698b9470 nearly done, only two known test failures
- moved typed actor factories to app/context (like actor factories)
- fixed a few misplaced supervision changes, all such tests green now
- actually test akka-reference.conf in ConfigSpec
- made DispatcherActorSpec more deterministic (failed intermittently
  here, was due to race towards thread pool)
- wrapped all actor initialization failures into
  ActorInitializationException and made sure that this leads to Stop
- default to Stop on ActorKilledException
- fixed ActorModelSpec to separately supervise the “waves of actors”
  because otherwise the app.guardian is way too busy processing all
  those ChildTerminated messages
- change ActorCell._children from Vector[Stats] to TreeMap[ActorRef,
  Stats] for performance reasons, have not measured memory impact, yet
- ensured that InterrupedException does not leave current thread via
  Failed message to supervisor (wrapped in ActorInterruptedException)
- set core-size=1 and max-size=4 for default dispatcher during test
2011-10-20 23:37:54 +02:00
Roland
172ab31f2a improve some, but tests are STILL FAILING
- AkkaApplication.stop() will stop the guardian; when that stops, it
  will send ChildTerminated to the BubbleWalker, who will then complete
  a Promise
- AkkaApplication.terminationFuture is that Promise and available for
  registration of onComplete callback, used now to shutdown the
  Scheduler
- AkkaSpec extends BeforeAndAfterAll and uses that to call app.stop(),
  exposing atStartup() and atTermination() overridable hooks
- fixed some tests
2011-10-20 20:45:02 +02:00
Roland
25f436d521 add TestKit.fishForMessage 2011-10-20 13:43:24 +02:00
Roland
d3837b9fc3 Introduce parental supervision, BUT TESTS ARE STILL FAILING
- every actor is now supervised, where the root of the tree is
  app.guardian, which has its supervisor field set to a special ActorRef
  obtained from provider.theOneWhoWalksTheBubblesOfSpaceTime (this name
  is meant to indicate that this ref is outside of the universe, cf.
  Michio Kaku)
- changed all tests to obtain specially supervised children (i.e. not
  top-level) via (supervisor ? Props).as[ActorRef].get
- add private[akka] ScalaActorRef.sendSystemMessage for sending
  Supervise()
- everything routing or remote is broken wrt. supervision, as that was
  not “properly” implemented to begin with, will be tackled after
  app/supervision/eventbus/AkkaSpec are stabilized enough
2011-10-19 17:18:50 +02:00
Viktor Klang
77dc9e9c35 #1299 - Removing reply and tryReply, preparing the way for 'sender ! response' 2011-10-19 16:59:47 +02:00
Viktor Klang
0dc3c5ad3d Removing receiver from Envelope and switch to use the Mailbox.actor instead, this should speed up the BalancingDispatcher by some since it doesn't entail any allocations in adopting a message 2011-10-19 13:19:44 +02:00
Viktor Klang
01efcd7b50 Removing ActorCell.ref (use ActorCell.self instead), introducing Props.randomAddress which will use the toString of the uuid of the actor ref as address, bypassing deployer for actors with 'randomAddress' since it isn't possible to know what the address will be anyway, removing Address.validate since it serves no useful purpose, removing guard.withGuard in MessageDispatcher in favor of the less costly lock try-finally unlock strategy 2011-10-18 19:14:42 +02:00
Viktor Klang
474787a81d Renaming createActor to actorOf 2011-10-18 17:56:23 +02:00
Roland
183dfb4d7f remove SystemEnvelope
- channel field was always set to NullChannel and not used
- receiver field is better put into the Mailbox, because there it takes
  space only once per actor
- leaves only the bare SystemMessage to be queued
2011-10-18 16:44:35 +02:00
Viktor Klang
7a6508973f Adding extra output to give more hope in reproducing weird test failure that only happens in Jenkins 2011-10-18 12:40:44 +02:00
Roland
9e8091459b rename application to app everywhere to make it consistent 2011-10-13 14:23:44 +02:00
Roland
44b94643e5 Merge with Peter's work (i.e. merging master into tame-globals) 2011-10-13 14:17:07 +02:00
Peter Vlugter
317b8bc03b Merge master into tame-globals branch 2011-10-13 13:41:44 +02:00
Roland
85b7accfd4 make EventHandler non-global
- add Logging trait for nicer interface
- add EventHandlerLogging class for offering the nice interface from
  app.log
- add eventHandler instance to app and use that for all internal logging
  (this means that some places (dispatchers, remoting) were infiltrated
  by app just to do logging, but I think we'll need app in there soon
  enough for other reasons)
2011-10-13 13:21:59 +02:00
Peter Vlugter
e25ee9f0e2 Fix remote main compile and testkit tests 2011-10-12 15:36:10 +02:00
Roland
9444ed8beb introduce nicer AkkaSpec constructor and fix FSMActorSpec 2011-10-12 11:35:45 +02:00
Roland
93b1ef3703 make akka-actor-tests compile again 2011-10-11 16:05:48 +02:00
Peter Vlugter
1e1409e796 Start on getting the actor tests compiling and running again 2011-10-10 15:45:55 +02:00
Jonas Bonér
3e6decffc0 Removed the ActorRegistry, the different ActorRefProvider implementations now holds an Address->ActorRef registry. Looking up by UUID is gone together with all the other lookup methods such as 'foreach' etc. which do not make sense in a distributed env. 'shutdownAll' is also removed but will be replaced by parental supervision. 2011-10-10 14:02:33 +02:00
Roland
2599de0381 Scalariform & add AkkaSpec 2011-10-10 11:22:01 +02:00
Peter Vlugter
3aadcd7645 Update stm module to work with AkkaApplication 2011-10-07 15:22:36 +02:00
Roland
2381ec54d0 introduce AkkaApplication
- remove global Config
- pull everything which depended on it into new AkkaApplication
- leave EventHandler alone for the moment: that evil sucker gets his
  very own AkkaApplication("akka-reference.conf") until we have settled
  on an acceptable logging API without globals
- make akka-actor and akka-testkit compile
- TestKit uses implicit AkkaApplication passing for maximum convenience
- Actor object nearly completely removed, actor creation possible via
  ActorRefFactory interface which is implemented by AkkaApplication and
  ActorContext
- serialization of ActorRef is probably broken, and so is the reflective
  RemoteSupport (now needs AkkaApplication constructor arg)
- everything else is still broken, including akka-actor-tests, so this
  is of course all not runtime-tested
2011-10-06 21:19:46 +02:00
Viktor Klang
0f049d67e6 Removing ActorRef.isRunning - replaced in full by isShutdown, if it returns true the actor is forever dead, if it returns false, it might be (race) 2011-10-03 19:43:45 +02:00
Viktor Klang
a12ee36151 Merge commit 2011-09-29 13:11:35 +02:00
Viktor Klang
a6f53d8605 Major rework of supervision and death watch, still not fully functioning 2011-09-28 14:19:59 +02:00
Roland
fd78af410c add () after side-effecting TestKit methods, fixes #1234 2011-09-28 12:59:51 +02:00
Viktor Klang
24d9a4d143 Merging with master 2011-09-27 18:02:57 +02:00
Jonas Bonér
db8a20ea37 Changed all 'def foo(): Unit = { .. }' to 'def foo() { .. }' 2011-09-27 17:41:02 +02:00
Viktor Klang
1edd52c691 Rewriting so that the termination flag is on the mailbox instead of the ActorCell 2011-09-23 13:14:17 +02:00
Viktor Klang
1662d25944 Rewriting the Balancing dispatcher 2011-09-23 09:33:53 +02:00
Viktor Klang
3d12e47e7d Decoupling system message implementation details from the Mailbox 2011-09-21 16:27:31 +02:00
Roland
7c63f94169 Refactor Mailbox handling
- rename MessageInvocation to Envelope (same for System...)
- rename MessageQueue to Mailbox and include ExecutableMailbox code
- make MailboxType act as factory, so users can provide their own
- properly type mailbox field as Mailbox everywhere
- adapt CallingThreadDispatcher and some tests
- create DeadletterMailbox and use it to replace actor’s mailbox on
  terminate()
2011-09-21 15:16:14 +02:00
Roland
95b42d8c5b fix some of the immediate issues, especially those hindering debugging 2011-09-21 08:25:08 +02:00
Viktor Klang
9007b6e847 Almost there... ActorRefSpec still has a failing test 2011-09-20 18:34:21 +02:00
Peter Vlugter
48deb311fc Rename ActorInstance to ActorCell 2011-09-20 15:45:43 +02:00
Peter Vlugter
7b1cdb4457 Remove SelfActorRef and use ActorContext to access state in ActorInstance. See #1202
- removed SelfActorRef
- added an ActorContext interface that provides a view into ActorInstance
- the ActorInstance (as ActorContext) gets injected into the Actor
- moved self methods like sender and reply directly to the Actor
2011-09-19 12:03:15 +02:00
Roland
c1d9b49935 improve failure messages in case of expectMsg... timeout
- always include the (set of) expected message(s)
- only thing missing is in case of expectMsgPF: cannot print PF code
2011-09-16 10:59:12 +02:00
Peter Vlugter
b96f3d9260 Initial breakout of ActorInstance. See #1195 2011-09-15 09:54:40 +02:00
Viktor Klang
4a0358ad7d Removing LifeCycle from Props, it's now a part of AllForOnePermanent, OneForOnePermanent etc 2011-09-14 18:01:43 +02:00
Viktor Klang
6114df1efd Merge branch 'master' into wip-nostart 2011-09-08 17:22:52 +02:00
Peter Vlugter
0430e284a6 Get the (non-multi-jvm) cluster tests working again
- avoid initialising the cluster in TransactionLog
- allow TransactionLog to be started and shutdown multiple times
- correct the startup and shutdown in the transaction log tests
2011-09-08 17:19:27 +02:00
Viktor Klang
bbb79d8e0d Start removed but cluster is broken 2011-09-08 11:02:17 +02:00
Roland
950f311648 fix compilation warnings (failed @Inline, erased types)
- make no-@Inline variant of DefaultPromise.timeLeft()
- remove type parameters from matches where not needed
- switch DinigHackersOnFsm to self.channel
2011-09-05 09:29:51 +02:00
Viktor Klang
548ba08cb5 #1145 - Changing private[akka] to protected[akka] in MessageDispatcher so that inheriting classes can access those methods 2011-08-30 15:50:52 +02:00