Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
  • May 14 23:27
    Arkatufus edited #5017
  • May 14 23:27
    Arkatufus edited #5017
  • May 14 23:27
    Arkatufus opened #5017
  • May 14 23:13
    Arkatufus closed #5016
  • May 14 23:04
    Arkatufus opened #5016
  • May 14 22:13
    Arkatufus labeled #5014
  • May 14 22:13
    Arkatufus assigned #5014
  • May 14 22:06
    Arkatufus synchronize #5014
  • May 14 22:03
    Arkatufus synchronize #5014
  • May 14 20:56

    Aaronontheweb on dev

    [RACY] LoggerSpec TestOutputLog… (compare)

  • May 14 20:56
    Aaronontheweb closed #5015
  • May 14 20:56
    Aaronontheweb labeled #5015
  • May 14 20:44
    Arkatufus synchronize #5015
  • May 14 20:40
    Arkatufus opened #5015
  • May 14 20:39
    Arkatufus commented #5014
  • May 14 20:38
    Arkatufus converted_to_draft #5014
  • May 14 19:37
    Aaronontheweb synchronize #5014
  • May 14 18:58
    brah-mcdude edited #5010
  • May 14 18:20
    Arkatufus opened #5014
  • May 14 14:00

    Aaronontheweb on dev

    Fix SonarQube's "IEnumerable LI… (compare)

Ok. Thanks a lot! All the best!
Bartosz Sypytkowski
no problem ;)
Vagif Abilov
Thanks @Horusiath
Bart de Boer
I had this idea today that would greatly help debugging Akka applications (actually, unit tests) - a way to render all the interactions between actors as a sort of 'sequence diagram' . But in order to do this, I need some kind of hook that tells me about each message being Telled. IIRC Monitoring does something like it - but is there a generic way to hook in somewhere in order to get the data I'm looking for?
Bart de Boer
Hook into Dispatcher somehow?
Aaron Stannard
the ActorCell or mailbox maybe
ActorCell has the best information probably
if not there then overriding the AroundReceive base method
on your actors
Bart de Boer
The thing with AroundReceive is that... it's actually the moment of telling that's interesting as well
most interesting and consistent, as multiple Tells will always be in the right order then.
But Dispatcher can't have the hook as it handles entire mailboxes, and Monitoring , well, requires changes to each actor as well...
Going to look at Cell
Andrew Young
as far as you guys know, compatibility between nodes running in .NET Framework and .NET Core isn't a problem, right?
Cluster nodes, that is.
Bart de Boer
@ayoung IIRC it is not supported at all (serialization issues with at least one of the serializers)
Arjen Smits
@ayoung @boekabart Im not aware of any issues? If you use the same serializer on each side, it should not be an issue. Best approach would be to use protobuff all the way through.
/cc @alexvaluyskiy ?
Roman Golenok
Guys, is Akka.IO ready for production?
I still see TBD in documantation for classes.
Alex Valuyskiy
@shersh yes, it is ready. TBD is related only for XML Documentation, not for the API itself
Paweł Bańka

Hi, I have a question related to Stash. I don't understand this piece of docs:

The IWithUnboundedStash interface implementation of PreRestart will call UnstashAll(), which is usually the desired behavior.

(http://getakka.net/articles/actors/receive-actor-api.html#stash) Does this happen automagically when I implementIWithUnboundedStash on my actor? Where is this logic defined? I can't find it...

yeah, seems like it, since BeforeIncarnated is a

Plugin behavior applied to underlying <paramref name="actor"/> instance before the actor is being recycled.

Paweł Bańka
While I'm at it, another question - why is UntypedActor API "recommended for C# 7 users"? Because of better switch support?
Aaron Stannard
@shersh yep, we use it in our products
@pmbanka I still use ReceiveActor mostly myself
but yeah, C# 7 makes working with the UntypedActor much more bearable
but ReceiveActor can do things switch cannot, such as matching on generics
Paweł Bańka
thanks @Aaronontheweb. The docs left me quite confused about the difference and whether one of them should be preferred (and why)
Bart de Boer
So is the bottom line that ReceiveActor is likely to be 'heavier' than necessary for C# 7 code?
Aaron Stannard
@pmbanka which page of the docs?
Paweł Bańka
@Aaronontheweb the workflow was like that: 1) click http://getakka.net/articles/actors/receive-actor-api.html, start reading. It starts with actors, blah blah, then defining, props, all that jazz. Ok, but I see there is also another API. So I go to 2) http://getakka.net/articles/actors/untyped-actor-api.html, see the beginning is the same, scroll down, creating actors, props, etc. 3) realize that these APIs seem very similar, start hunting down what is the difference, notice OnReceive in one and pattern match in the other one 4) notice the info on top of UntypedActor API page about C# 7, confirming it is mostly about the switch (?)
I think it would be nice to put some section somewhere explainig why are there 2 different APIs, what is the difference and pros/cons
especially since googling akka.net receive actor vs untyped actor does not return anything about the why
Aaron Stannard
@pmbanka well then
I've been overdue for some technical blog posts on Petabridge's site
sounds like a good one lol
on the official website we mostly just try to give you an explanation for how things work
and what the different tools are meant to be used for
we don't editorialize them much
Stephen Newman

Is there anyone out there that can help me get my head around the implications that leveraging persistence in an existing actor. I've changed the base class and am moving some "commands" over to the construct events, persist, process event pattern but am getting what "feels" like asynchronous processing of the event processing. Is it true to say that:

1) A message is received
2) Message is treated as a command and an event is created from the command
3) Persist is called supplying the event to persist and a handler to be invoked after successful persistence
4) Next message is pulled from the mailbox and processed
5) Persistence completes
6) Handler supplied in 3 is invoked with persisted event

That's how it feels, so I wonder if that is accurate, and is the fix to complete the moving over from messages to Commands/Events and it'll be okay.

Dave New
Question around async methods which return data (to an Ask) and PipeTo: would using ContinueWith on faulted tasks be a reasonable way to 'catch' and handle exceptions thrown. Example:
            Receive<SomeRequest>(request =>
                    .ContinueWith(t => new FailedResponse(t.Exception), TaskContinuationOptions.OnlyOnFaulted)
Dave New
if i try this, i get an empty Akka.Actor.Status.Failure message returned
Aaron Stannard
@davenewza ideally we should populate the exception into that Status.Failure message
part of the issue there though is that you'll never get anything on that PipeTo if the task succeeds normally I don't think
since PipeTo is continuing off of the OnlyOnFaulted Task
I have an example of what I usually do here...
// pipe the result of our markets to ourselves
            _exchangeFeedClient.HttpClient.Markets.GetProducts(cts.Token).ContinueWith<object>(tr =>
                if (tr.IsCanceled || tr.IsFaulted)
                    return new Status.Failure(tr.Exception);
                return tr.Result;
I have a catch-all continuation
that I use to handle any case