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.
* 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.
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
- 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
- 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
if you override a method and use a more specific return type, scalac
will emit a bridge method with the expected signature pointing to the
more specific one, but currently this does upset the Eclipse based
Java builders, so add one type ascription to ExtensionKey.
* 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
- used only to keep the uniquifying logger counter per-ActorSystem
- add convenience-class for writing an extension with only two lines
overhead (Java: three)!
- 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
* 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