Commit graph

52 commits

Author SHA1 Message Date
Patrik Nordwall
b738487dc8 Add UID to RemoteActorRef, see #3072
* Sending to a previous incarnation of an actor shall fail,
  to make remote actors work the same way as local ones (in
  the sense that after Terminated() the ref is not working anymore)
* Changed equality of ActorRef to take the uid into account
* Parse uid fragment in RelativeActorPath and ActorPathExtractor
* Handle uid in getChild and in RemoteSystemDaemon
* Use toSerializationFormat and toSerializationFormatWithAddress
  in serialization
* Replaced var uid in ActorCell and ChildRestartStats with
  constructor parameters (path)
* Create the uid in one single place, in makeChild in parent
* Handle ActorRef with and without uid in DeathWatch
* Optimize ActorPath.toString and friends
* Update documentation and migration guide
2013-03-21 20:25:16 +01:00
Viktor Klang
d4549ffb71 Reenabling the SerializationCompatibilitySpec, now with extra bells and whistles. 2013-01-28 23:20:43 +01:00
Viktor Klang
647c128aaa Making it easier to understand where the SerializeSpec fails 2013-01-28 23:08:17 +01:00
Rich Dougherty
7b3ec79c0c Make it easer to override SystemMessage serialization. Fixes #2940
* Make SystemMessage extend Serializable to avoid ambiguity when
    setting serialization-bindings.
  * Set serialVersionUID in SystemMessages and create tests to
    ensure binary formats remain unchanged.
  * Add tests for reference.conf's serialization settings.
  * Make some existing serialization tests more robust.

Removed boilerplate from serialization tests

Use actual reference.conf; tidy up

Make serialization compatible
2013-01-28 13:23:52 +13:00
Viktor Klang
adfeb2c1f0 #2879 - updating copyright info 2013-01-09 11:38:00 +01:00
Roland
0f04239f67 move Duration classes according to scala 2.10 nightly and remove casts to FiniteDuration, see #2504 2012-10-11 15:18:10 -07:00
Viktor Klang
a789e1a19d Switching to not initializing loaded classes up front and cleaning up the test case. 2012-09-27 11:34:04 +02:00
Viktor Klang
5ebbd0689e Adding more rigorous tests for ByteArraySerializer 2012-09-27 01:10:07 +02:00
Viktor Klang
88bc75daf0 #2499 - Adding ByteArraySerializer and change ReflectiveDynamicAccess to use Class.forName with classloader instead of classloader loadClass directly. 2012-09-27 00:59:33 +02:00
Viktor Klang
4eee04cb60 #2469 - Switching to scala.util.Try instead of Either[Throwable, T] in the codebase 2012-09-06 03:17:51 +02:00
Roland
a15900a591 port onto SBT-0.12 branch 2012-08-22 11:10:36 +02:00
Roland
c1c05ef95e fix CTD vs. RepointableRef by swallowing exceptions during send
- it was always intended that tell() (and sendSystemMessage()) shall not
  throw any exceptions
- this is implemented by swallowing in ActorCell
  (suspend/resume/restart/stop/!/sendSystemMessage) and in
  RemoteActorRef (!/sendSystemMessage)
- current implementation uses a normal method, which adds overhead but
  keeps the code in one place (ActorCell.catchingSend); this is a great
  opportunity for making use of macros
2012-08-15 21:46:05 +02:00
Viktor Klang
0bf45a9403 Initial work in moving to scala.concurrent.Await + Awaitable 2012-06-29 16:06:26 +02:00
Viktor Klang
54a3a44bf8 #2292 - Removing akka.util.Duration etc and replace it with scala.concurrent.util.Duration 2012-06-29 13:33:20 +02:00
Viktor Klang
543737a933 Updating to scalatest 2.10.0-M4-x-B2 and adding feature imports 2012-06-21 16:09:14 +02:00
Roland
d2f28a06cd Merge remote-tracking branch 'origin/master' into wip-1750-remove-ReflectiveAccess-∂π 2012-02-10 11:41:47 +01:00
Roland
2ce47d6bb5 Bye-bye ReflectiveAccess, introducing PropertyMaster, see #1750
- PropertyMaster is the only place in Akka which calls
  ClassLoader.getClass (apart from kernel, which might be special)
- all PropertyMaster methods (there are only three) take a ClassManifest
  of what is to be constructed, and they verify that the obtained object
  is actually compatible with the required type

Other stuff:
- noticed that I had forgotten to change to ExtendedActorSystem when
  constructing Extensions by ExtensionKey (damn you, reflection!)
- moved Serializer.currentSystem into JavaSerializer, because that’s the
  only one needing it (it’s only used in readResolve() methods)
- Serializers are constructed now with one-arg constructor taking
  ExtendedActorSystem (if that exists, otherwise no-arg as before), to
  allow JavaSerializer to do its magic; possibly necessary for others as
  well
- Removed all Option[ClassLoader] signatures
- made it so that the ActorSystem will try context class loader, then
  the class loader which loaded the class actually calling into
  ActorSystem.apply, then the loader which loaded ActorSystemImpl
- for the second of the above I added a (reflectively accessed hopefully
  safe) facility for getting caller Class[_] objects by using
  sun.reflect.Reflection; this is optional an defaults to None, e.g. on
  Android, which means that getting the caller’s classloader is done on
  a best effort basis (there’s nothing we can do because a StackTrace
  does not contain actual Class[_] objects).
- refactored DurableMailbox to contain the owner val and use that
  instead of declaring that in all subclasses
2012-02-09 11:56:43 +01:00
patriknw
780736255b Merge pull request #311 from jboner/wip-1786-SerialVersionUID-patriknw
Some cleanup and additional tests for Serializable. See #1786
2012-02-08 00:38:40 -08:00
Roland
224ce7f773 tone it down: just a Warning in case of ambiguous serializers 2012-02-07 15:51:41 +01:00
Roland
8b9f1caf67 change serialization to strictly rely on subtyping
- when encountering new message type, check all bindings which map apply
- if multiple are found, choose the most specific one if that exists or
  verify that all mappings yield the same serializer
- in case of remaining ambiguity, throw exception
- also add special handling for “none” serializer mapping: turn off a
  default
2012-02-07 15:11:16 +01:00
Patrik Nordwall
9c8c0d42c5 Add @SerialVersionUID to Serializable classes. See #1786
* @SerialVersionUID(1L)
* UntypedActorFactory serialization, and test
* Removed Serializable from Serializers
2012-02-07 10:05:54 +01:00
Patrik Nordwall
239df9d5fb Improvements after review 2012-02-06 22:20:38 +01:00
Patrik Nordwall
1dbce49359 Configure serializer with class as key. See #1789 2012-02-06 21:15:17 +01:00
Patrik Nordwall
612e909c48 Find serializer by looking at interfaces and super classes. See #1766 2012-02-03 17:32:32 +01:00
Roland
34a0f005b1 Merge branch 'master' into wip-1581-patterns-ask 2012-01-20 19:29:17 +01:00
Viktor Klang
149fbea5a7 Updating Copyright as per #1660 2012-01-19 18:21:06 +01:00
Roland
2bed2cb954 move everything into package akka.pattern 2012-01-18 10:18:51 +01:00
Nikolay Botev
ce1d2f4721 akka.patterns.ask everywhere 2012-01-01 22:23:19 -08:00
Viktor Klang
fbb7cb20a1 Adding Java docs for Serialization, and discovered some flaws with the Java API, that have been fixed 2011-12-30 22:06:41 +01:00
Viktor Klang
7aa8904a28 Fixing VerifySerializabilitySpec 2011-12-30 19:13:09 +01:00
Viktor Klang
e78739f7e5 Adding more docs to Serialization and making sure that the Protobuf stuff gets its manifests 2011-12-30 14:15:27 +01:00
Viktor Klang
cffe60bf43 Closing #1584 and #1585 2011-12-30 14:15:26 +01:00
Viktor Klang
840cacfd2a initial commit on serialization docs 2011-12-30 14:14:12 +01:00
Viktor Klang
d50a07c74b Breaking the verification test up in 3 pats 2011-12-27 20:07:21 +01:00
Viktor Klang
9701685897 Adding support for verifying serializability of Props.creator as well 2011-12-27 17:30:05 +01:00
Roland
5eedbdd69f rename ActorSystem.stop() to .shutdown() 2011-12-14 01:06:20 +01:00
Roland
cb85778b12 remove ActorRef.stop()
- replace ActorRef.stop() by ActorRefFactory.stop(child) everywhere
- ActorCell “optimizes” this to remove the child from its childrenRefs
  in order to allow immediate recycling of the name
- the lost soul must have a place, for which the Locker has been
  created, where Davy Jones will happily rebind the soul to his ship
  (i.e. set “parent” to the locker to avoid mem leak) and periodically
  revisit it (.stop(), in case of that being lost in comm failure,
  similar .watch() to re-check liveness)
2011-12-14 00:10:53 +01:00
Viktor Klang
3b5d45feac Minor corrections after review 2011-12-08 17:45:02 +01:00
Viktor Klang
712805baec Making sure that ActorCell isn't serializable 2011-12-08 16:07:03 +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
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
Viktor Klang
bf20f3fa44 Reinterpretation of Extensions 2011-11-24 18:53:18 +01:00
Patrik Nordwall
179399296e Modularize configuration. See #1361
* Split config reference to one for each module/extension.
* Adjusted signature of registerExtension to avoid race of extension init
* Moved Duration.dilated to testkit
* TestKitExtension
* RemoteExtension
* SerializationExtension
* Durable mailboxes extensions
* Fixed broken serialization bindings and added test
* Updated configuration documentation
* System properties akka.remote.hostname akka.remote.port replaced with akka.remote.server.hostname and akka.remote.server.port
* Adjustments of ActorSystem initialization. Still don't like the two-phase constructor/init flow. Very fragile for changes.

Review fixes. SerializationExtension
2011-11-23 20:31:58 +01:00
Roland
d381b72061 rename app: ActorSystem to system everywhere 2011-11-17 12:36:35 +01:00
Roland
648661c548 clean up initialization of ActorSystem, fixes #1050
- create ActorSystemImpl trait to make ActorSystem fully abstract
- add Java API for constructing (ActorSystem.create(...))
- only go through factory methods because .start() has become necessary
- rename all user-facing occurrences of “app” to “system” (Actor trait
  and TestKit/AkkaSpec)
- pass ActorSystemImpl to ActorRefs upon creation, which means that
  actorOf() and friends need such an argument, which must be provided to
  the ActorRefProvider by the ActorRefFactory implementation
2011-11-16 17:18:36 +01:00
Roland
945b1aedf9 rename akka.AkkaApplication to akka.actor.ActorSystem
Renaming it to System did not appeal after seeing that such a thing is
already imported from Predef ...
2011-11-10 21:00:01 +01:00
Viktor Klang
2f52f43fa8 Refining the DeadLetterActorRef serialization test to be a bit more specific 2011-11-01 11:31:53 +01:00
Viktor Klang
3aed09c43d #1320 - Implementing readResolve and writeReplace for the DeadLetterActorRef 2011-11-01 11:20:02 +01:00
Roland
bb942750aa make most AkkaSpec-based tests runnable in Eclipse 2011-10-21 17:01:22 +02:00
Roland
93b1ef3703 make akka-actor-tests compile again 2011-10-11 16:05:48 +02:00