* missing for some error cases
* in the states recoveryStarted and recovering it has got the permit and
it must returned if the actor is stopped due to some error in those
states
* it would have been a lot easier to do such in postStop but we can't
introduce new things in the trait Eventsourced due to BC
Test would fail picking up the reachable from the previous unsplit
as it is a new probe.
Also change barrierCounter to split/unsplit so easier to see
where the failure is on a barrier fail
* Suppress 'match is not exhaustive!' warning
Not super clean, but gets rid of the compiler warning shown every time this
file is compiled.
* Using a NotImplementedError rather than a MatchError
This is needed because the `ActorSystemAdapter` is instantiated early on
in the typed ActorSystem initialization process already when the infrastructure
is created to run the typed guardian. This is too early to initialize
the typed extensions. The new untyped LoadTypedExtension is only loaded
later on when the untyped ActorSystem is ready.
Serializers are initialized early on even before the underlying untyped
ActorSystem is fully initialized. Accessing extensions might trigger
a chain of initialization that might step on uninitialized internal bits
later on.
* Replacement of spawnAdapter, we could could keep spawnAdapter as
an internal feature (we know about the resource leak risk)
* The new ActorContext.messageAdapter can be used in the
same way as spawnAdapter but without the risk of unbounded
resource leak.
* Only one message transformer per class is supported to avoid
unbounded growth of registered transformers in case they are
registered repeatedly. That is also a way to replace transformers,
if that would be needed.
* It's still encouraged to register the transformers in a top level
deferred, but other usages are possible. It would still be wrong
to capture incoming message specific context in the transformer
function.
* The transformation function is run inside the actor.
* One single spawnAdapter ref is used for all transformers. It wraps
the message in an internal Transform message.
* rename to spawnMessageAdapter and only kept it as internal in scaladsl
* update chat room example to use child actors
* docs
+str #24229 remove protobuf changes, which do not need to be made in this PR
docs
moved things
config object
subscription timeout confifmed working, also, attributes
document attributes for sub timeout
tests for the source also failing when it should
additional demand test
implemented protection from materializing "in cycles"; would be nice in
types but that breaks the niceness of use of the types
SinkRef/SourceRef...
cleanup
no idle timeout built in, can use the Timeout stages
more docs
simplest change to prevent exposing SinkRef => SourceRef => SinkRef cycle
Things to decide:
* is it ok to require using `getSource` / `getSink` as Java API, is there better naming?
* where should the constructors go? I'd say just in regular javadsl/scaladsl `Source`/ `Sink` objects
move constructors to {javadsl,scaladsl}.{Source,Sink} companion objects
Remove now useless "canMaterialize" field
Separate stage (implementation) from ref (wrapped actor ref) to make it clearer what is serialized
Clarify that partner refs are not optional in on-the-wire interfaces
minor cleanup in SourceRefStage
Renamed the stages but questionable if that really helps ;)
cleanups, better docs
cleanup, fix docs compilation
fix mima
got rid of Futures in the materialized values of stream refs
silly serialization mistake, should have fixed serialize as well
tage actors now can have names, which helps a lot in debugging
thread weirdness
make sure to fail properly, actually go over remoting
issue with not receiving the SinkRef... what
initial working SinkRef over remoting
remote Sink failure must fail origin Source as well
cleaning up and adding failyre handling
SinkRef now with low-watermark RequestStrategy
source ref works, yet completely duplicated code
* Utility for stashing, #22275
* The main reason for providing these utilities and promote
a standardized way of doing the buffering is that monitoring
instrumentation can be added to these classes, which is not
possible if we just say "buffer in some collection".
* unstash a few at a time, became rather complicated
* separate api and impl, and more tests
Untyped actor systems currently only support specifying dispatchers via a
name reference to the config. The other selectors can be revived when other
ways of configuring dispatchers are available for untyped actor systems
(see #17568).