Commit graph

620 commits

Author SHA1 Message Date
Roland
9d7597c728 Merge branch master into wip-ActorPath-rk
Had to make Davy Jones a bit more robust, i.e. put him into a different
system to guarantee survival until all messages are delivered.
2011-12-05 22:46:34 +01:00
Roland
0b5f8b083d rename ActorPath.{pathElemens => elements} 2011-12-05 15:57:43 +01:00
Roland
eeca88d674 add test for “unorderly” shutdown of ActorSystem by PoisonPill
- uncovered nasty endless loop bug wrt. dead letters and a dead listener
- fixing that bug removed the MainBusReaper (sigh)
- also fix compilation of tutorial-first, but that REALLY needs to be
  changed not to create RoutedActorRef using new!
2011-12-05 15:18:22 +01:00
Roland
236ce1557c fix visibility of top-level actors after creation
Obtaining an ActorRef means that its path must be found in look-ups.
Since this is tightly coupled to supervision, the plan of managing /user
and /system actors in special ConcurrentHashMaps did not succeed: the
actor might not yet be supervised when the system is stopped, which
would orphan it; or a look-up directly following its creation would
return deadLetters. Since all of this is not desirable, I changed the
strategy to sending the props and name to the respective supervisor, let
it create the child and hand it back, i.e. I’m using ask/get with
ActorTimeout. This is okay since top-level should not be created at MHz
rate (will have to document this, though).

- also fix one expected exception in TypedActorSpec and the names of
  configured routers
2011-12-03 22:25:18 +01:00
Roland
4c1d722398 fix bug in ActorRef.stop() implementation
- it was telling all children to stop(), then waited for the
  ChildTerminated messages and finally terminated itself
- this worked fine, except when the stop came from the supervisor, i.e.
  the recipient was suspended and did not process the ChildTerminated
- so, as the mirror of Supervise() that it is, I changed
  ChildTerminated() to be a system message and instead of stopping
  processing normal messages by checking the stopping flag, just suspend
  the actor while awaiting the ChildTerminated's to flow in.
2011-12-03 18:53:04 +01:00
Roland
3d0bb8b415 implement ActorSeletion and document ActorRefFactory
- implementation of this cool feature is now astonishingly simple:
  context.actorSelection("child/*") ! msg
- docs propagate to ActorSystem/ActorContext
2011-12-03 17:39:52 +01:00
Roland
79e5c5d0d1 implement coherent actorFor look-up
- look-up of all actor paths in the system, even “synthetic” ones like
  “/temp”
- look-up by full URI (akka://bla/...), absolute or relative path
- look-up by ActorPath
- look-up by path elements
- look-up relative to context where applicable, supporting ".."
- proper management of AskActorRef

Have a look at ActorLookupSpec to see what it can do.
2011-12-03 12:23:23 +01:00
Viktor Klang
b2ecad1327 Merge branch 'master' of github.com:jboner/akka 2011-12-02 17:47:22 +01:00
Viktor Klang
93d093e87a Commenting out the ForkJoin stuff until I've cleared some bits with Doug Lea 2011-12-02 17:29:47 +01:00
Patrik Nordwall
1f665ab4c6 Changed signatures of Scheduler for better api of by-name blocks 2011-12-02 17:13:46 +01:00
Roland
e38cd19af9 Merge branch 'master' into wip-ActorPath-rk 2011-12-02 13:31:48 +01:00
Roland
cf020d708a rename top-level paths as per Jonas recommendation
/user
/system
/null
/temp
/remote
/service

multi-jvm tests are disabled for the time being until remote look-up has
been really implemented
2011-12-02 12:24:47 +01:00
Patrik Nordwall
b488d70f54 Fixed several memory and thread leaks. See #1404
* Dispatchers need Scheduler to be able to shutdown themselves. Stop Scheduler after dispatchers.
* Changed CallingThreadDispatcher global object to Extension, since it holds map of references to mailboxes. Will be GC:ed when system is GC:ed.
* Made testActor lazy, since it is not used in all tests, and it creates CallingThreadDispatcher.
* Activated some java tests that were not running
* Many tests were not stopping created ActorSystems. VERY IMPORTANT TO STOP ActorSystem in tests. Use AkkaSpec as much as possible.
* Used profiler to verify (and find) dangling ActorSystemImpl and threads from dispatchers.
* FutureSpec creates ForkJoinPool threads that are not cleared, but number of threads don't grow so it's not a problem.
2011-12-02 09:48:21 +01:00
Patrik Nordwall
82bbca43ab Merge branch 'master' into wip-1378-fixme-patriknw
Conflicts:
	akka-actor/src/main/scala/akka/actor/ActorRef.scala
	akka-remote/src/main/scala/akka/remote/RemoteActorRefProvider.scala
	akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala
2011-12-02 09:03:03 +01:00
Patrik Nordwall
66bf11681c Changed config.toValue -> config.root 2011-12-02 08:51:51 +01:00
Patrik Nordwall
c5a367ad54 Merge branch 'master' into wip-config-patriknw 2011-12-02 08:49:34 +01:00
Viktor Klang
fcc6169ede Removing the final usages of startsWatching/stopsWatching 2011-12-02 01:00:55 +01:00
Viktor Klang
54e2e9a357 Switching more test code to use watch instead of startsWatching 2011-12-02 00:25:17 +01:00
Viktor Klang
571d856f54 Removing one use-site of startsWatching 2011-12-01 23:52:16 +01:00
Viktor Klang
ef27f865d4 Adding support for ForkJoinPoolConfig so you can use ForkJoin 2011-12-01 17:03:30 +01:00
Viktor Klang
e3e694d1dc Tweaking the consistency spec for using more cores 2011-12-01 17:02:30 +01:00
Roland
6b9cdc5f65 fix ActorRef serialization
- represent it by SerializedActorRef(path), i.e. only a “tagged” string
- remove serialize/deserialize from ActorRefProvider interface
- adapt test since deadLetters is returned when nothing found instead of
  exception
- multi-jvm tests are still broken, but that is due to look-up of remote
  actors, which I have just not done yet
2011-12-01 14:31:02 +01:00
Viktor Klang
e590a4877a Making the ConsistencySpec a tad more awesomized 2011-12-01 10:27:28 +01:00
Roland
b65799c7f3 remove ActorRef.address & ActorRef.name
- address => path.toString
- name => path.name
- forward hashCode, equals and compareTo to path
- implement recursive efficient ActorPath.compareTo
- fix ActorPath.equals endless recursion
- remove wrong warning in ActorCell.systemInvoke.supervise()
2011-11-30 23:30:56 +01:00
Roland
7e4333a612 fix actor creation with duplicate name within same message invocation
- ActorCell will pre-fill the childrenRefs with the reserved name in
  order to detect duplicates
- also clean up some test outputs (some ActorSystems forgot to fall back
  to testConf so they did not get the TestEventListener anymore)
- fix race in start-up of LoggingReceiveSpec by ignoring messages from
  testActor start (never was slow enough on my machine to trigger =>
  thank you Jenkins, again!)
- represent actors in logging only by their path, i.e. remote Actor[...]
  decoration
- fix automatic naming of AkkaSpec ActorSystems after the true class
  name of the test spec
2011-11-30 22:19:48 +01:00
Viktor Klang
070d446165 #1417 - Added a test to attempt to statistically verify memory consistency for actors 2011-11-30 10:52:51 +01:00
Patrik Nordwall
80ac1737cd First walk throught of FIXME. See #1378
* Fixed obvious
* Created tickets for several, #1408, #1409, #1410, #1412, #1415, 1416, #1418
* Moved LoggingReceive from akka.actor to akka.event
* Touched several of the FIXME to make them visible in code review
2011-11-30 10:48:26 +01:00
Roland
073c3c012b fix EventStreamSpec by adding Logging extension
- used only to keep the uniquifying logger counter per-ActorSystem
- add convenience-class for writing an extension with only two lines
  overhead (Java: three)!
2011-11-29 23:00:57 +01:00
Roland
afda539324 merge master into wip-ActorPath-rk 2011-11-29 21:52:18 +01:00
Roland
3182fa3d73 second step: remove LocalActorRefProvider.actors
- duplicate name detection done within ActorCell/ActorSystem (i.e. at
  parent level)
- no caching needed for local look-ups, might re-introduce cache in
  remote layer
- implement suitable equals/hashCode on ActorPaths
- fix some (unintended => buggy) name reuses which previously silently
  returned a different actor
- serialization & EventStreamSpec still failing, need to commit to merge
  in other stuff on which the future fixes will depend
2011-11-29 16:32:50 +01:00
Patrik Nordwall
b56201ab7f Updated to latest config lib and changed how reference config files are loaded.
* Config lib 4f3a91f
* All reference files named reference.conf, all will be loaded
* Usage of ConfigFactor.load as default way
* Extensions use same config as ActorSystem.settings.config
2011-11-29 11:56:41 +01:00
viktorklang
8ab25a23ac Merge pull request #128 from jboner/wip-1371
Making TypedActors an Akka Extension and adding LifeCycle overrides to T...
2011-11-29 00:49:26 -08:00
Viktor Klang
539e12a7a4 Making TypedActors an Akka Extension and adding LifeCycle overrides to TypedActors, see #1371 and #1397 2011-11-28 16:15:08 +01:00
Patrik Nordwall
a229140fac Fixed race in trading perf test. Fixes #1383 2011-11-28 14:44:19 +01:00
Patrik Nordwall
0f410b1252 Merge branch 'master' into wip-1373-log-config-patriknw 2011-11-28 10:22:04 +01:00
Henrik Engstrom
fda8bce371 Updated DefaultScheduler and its Spec after comments, see #1393 2011-11-26 15:24:13 +01:00
Henrik Engstrom
8bd4dadb96 Added check in DefaultScheduler to detect if receiving actor of a reschedule has been terminated. Fixes #1393 2011-11-25 17:56:14 +01:00
Patrik Nordwall
de2de7e9c2 Added logConfig to ActorSystem and logConfigOnStart property. See #1373
* toString of Config isn't good right now, but that will be fixed in Config lib
2011-11-25 16:19:54 +01:00
Patrik Nordwall
380cd1c128 Added some variations of the TellThroughputPerformanceSpec 2011-11-25 14:35:20 +01:00
viktorklang
e33b9569f2 Merge pull request #123 from jboner/wip-extensions
Reinterpretation of Extensions
2011-11-25 02:26:00 -08:00
Viktor Klang
603a8ed034 Creating ExtensionId, AbstractExtensionId, ExtensionIdProvider and Extension 2011-11-25 10:45:22 +01:00
Jonas Bonér
0a1740cd6d Merge branch 'master' of github.com:jboner/akka
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
2011-11-24 21:05:41 +01:00
Viktor Klang
bf20f3fa44 Reinterpretation of Extensions 2011-11-24 18:53:18 +01:00
Roland
dad1c98c48 first step: sanitize ActorPath interface
- remove references to ActorSystem
- make ChildActorPath light-weight (name & parent plus tailrec methods
  for traversing towards root, e.g. toString)
- string rep is full URI always (akka://system-name@host:port/user/bla)
2011-11-24 17:22:53 +01:00
Jonas Bonér
ef6c8370cd Added BroadcastRouter which broadcasts all messages to all the connections it manages, also added tests.
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
2011-11-24 16:35:37 +01:00
viktorklang
c0d3c523e2 Merge pull request #122 from jboner/hwt-nano-henrikengstrom
Using nanoTime instead of currentTimeMillis in HWT
2011-11-24 06:08:14 -08:00
Patrik Nordwall
c53d5e16e5 Merge branch 'master' into wip-1361-modularize-config-reference-patriknw
Conflicts:
	akka-actor/src/main/resources/akka-actor-reference.conf
	akka-actor/src/main/scala/akka/actor/ActorRefProvider.scala
	akka-actor/src/main/scala/akka/actor/ActorSystem.scala
	akka-remote/src/main/scala/akka/remote/Gossiper.scala
	akka-remote/src/main/scala/akka/remote/netty/NettyRemoteSupport.scala
2011-11-24 14:56:19 +01:00
Henrik Engstrom
310b2736c0 Changed the HWT implementation to use System.nanoTime internally instead of System.currentTimeMillis. Fixes #1381 2011-11-24 14:30:03 +01:00
Viktor Klang
3ab264238b Merge branch 'master' of github.com:jboner/akka 2011-11-24 10:38:42 +01:00
Henrik Engstrom
35d4d0456d Decreased the time to wait in SchedulerSpec to make tests run a wee bit faster, see #1291 2011-11-24 09:54:08 +01:00