Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 19:13
    hwanders commented #4096
  • 13:05
    IgorFedchenko commented #4085
  • 03:08
    hhko commented #4094
  • Dec 13 21:37
    Aaronontheweb commented #4085
  • Dec 13 20:28
    IgorFedchenko commented #4085
  • Dec 13 20:27
    IgorFedchenko commented #4085
  • Dec 13 15:38
    Aaronontheweb labeled #4096
  • Dec 13 15:38
    Aaronontheweb milestoned #4096
  • Dec 13 15:38
    Aaronontheweb labeled #4096
  • Dec 13 15:38
    Aaronontheweb opened #4096
  • Dec 13 10:41
    peirens-bart opened #4095
  • Dec 13 08:37
    Aaronontheweb synchronize #4071
  • Dec 13 08:13
    jiyeongj opened #4094
  • Dec 12 15:42
    Aaronontheweb synchronize #4086
  • Dec 12 15:42
    Aaronontheweb closed #4083
  • Dec 12 15:42

    Aaronontheweb on dev

    Fix #4083 - Endpoint receive bu… (compare)

  • Dec 12 15:42
    Aaronontheweb closed #4089
  • Dec 12 15:42
    Aaronontheweb labeled #4093
  • Dec 12 15:42
    Aaronontheweb labeled #4093
  • Dec 12 15:42
    Aaronontheweb labeled #4093
Bartosz Sypytkowski
@Horusiath
nothing abnormal - as long as you don't enforce semver as part of your build process, don't count on it
lol
Vagif Abilov
@object
So you are saying that Wire 0.8.1. works for you?
At least it's semver compliant for me :-)
Bartosz Sypytkowski
@Horusiath
well, I think I meant 0.7.1
;)
Vagif Abilov
@object
Now we're talking!
Bartosz Sypytkowski
@Horusiath
btw. soon we'll probably release Hyperion - it's a Wire fork, we'll be using from now on
Vagif Abilov
@object
I see, thanks.
Bartosz Sypytkowski
@Horusiath
At least I want to merge akkadotnet/Hyperion#9 before. Probably guys also have something with .NET core port, so we could publish both normal and .net core packages
Vagif Abilov
@object
Nope, same exception with 0.7.1!
Bartosz Sypytkowski
@Horusiath
if you're using Akka.Serialization.Wire maybe that package is outdated
Vagif Abilov
@object
Oh...
Yepp, will have a look at it.
Bartosz Sypytkowski
@Horusiath
because we use reference to Wire 0.7.1 inside of it
and I see, SerializerOptions are already known to it
Vagif Abilov
@object
Yes, upgrading Akka.Serialization.Wire fixed it!
I will event try 0.8.1 now, as semver suggests :-)
Or should I stick to 0.7.1 until Hyperion is out?
Bartosz Sypytkowski
@Horusiath
no, 0.8.1 should be fine
Vagif Abilov
@object
Thanks!
Alex Michel
@amichel
hi, any example available on how to persist become/unbecome state and process stashed messages after recovery (particularly I need to recover in cluster sharding scenario after rebalancing)
Arsene
@Tochemey
Hello Geeks. Can we have an alpha-release of the Akka.NET Core build?
Because some of us have become addicted to it.
Darren Ford
@4deeptech
I have some questions about clustering and actor deployment and configuration. I created a Gist https://gist.github.com/4deeptech/9a6416b980ba102a8e1c094d2ee2384f to show config context and have the questions in the comments of the .cs file. The questions revolve around deployment configuration on different nodes if a given node already has an actor defined. A Gist seemed easier to demonstrate with an area for comments.
Bartosz Sypytkowski
@Horusiath

@amichel if you're not using snapshots you can just change behavior using Become as part of state recovery. If you're using snapshots, then you can include current behavior i.e. as enum, and when snapshot offer will be loaded, just switch behavior depending on it. Other option would be to set receive method as delegate and persist it along with the state itself, but this require you to use serializer that is able to work with delegates (i.e. Wire/Hyperion should be ok).

Regarding stashed messages I don't know if there are any build in mechanics there - we could possibly make a PR for that. But since persisting messages themselves usually cripples performance, I think the easiest way here is to push stash content back to the shard. First thing, that came out to my head look like that:

// we need custom stop message (can be set in shard region)
// because PoisonPill will immediatelly terminate an actor
Command<CustomStop>(_ =>{
    var envelopes = Stash.ClearStash();
    foreach (var env in envelopes){
        /// retransmit messages back to myself using cluster sharding mechanics
        var shardId = Self.Path.Parent.Name;
        var entityId = Self.Path.Name;
        /// ShardEnvelope is used by shard region MessageExtractor implementation
        shardRegion.Tell(new ShardEnvelope(shardId, entityId, env.Message), env.Sender);
    }
});
@4deeptech each cluster node has a separate naming path - so /user/actorA on node 1 and /user/actorA on node 2 are two different paths
Philip Laureano
@philiplaureano
Hmm. Does anyone know if Akka.NET's schedulers are preemptive or cooperative?
Aaron Stannard
@Aaronontheweb
the actual scheduler for recurring tasks is just a hashed wheel timer
the dispatchers delegate the actual scheduling of mailbox runs down to the .NET thread pool or a dedicated thread pool
don't think either of those are pre-emptive
since there's no real concept of priority
Philip Laureano
@philiplaureano
but would it be possible to make it preemptive if you could suspend threads?
Bartosz Sypytkowski
@Horusiath
@philiplaureano sure, it's possible to achieve
Philip Laureano
@philiplaureano
Interesting
Bartosz Sypytkowski
@Horusiath
some tweaking in akka.net internals
on the other side - is there any preemptive scheduler solution in .NET?
Philip Laureano
@philiplaureano
I don't know--I was about to mock up a preemptive scheduler to see if it's possible
Bartosz Sypytkowski
@Horusiath
Erlang can do that because of reduction counter, Haskell has something similar. But is yielding in fixed points (like Go system calls or TPL awaits) considered preemptive?
Bartosz Sypytkowski
@Horusiath
what I mean here is that preemptive scheduler would need some support from the compiler or VM itself
otherwise user could write some custom code, that would never set a point for scheduler to intercept execution
Philip Laureano
@philiplaureano
Emitting the IL to add the necessary instructions isn't too difficult
I just need to wrap my head around the scheduling algorithm
Anyway, thanks for giving me a place to start :)
Bartosz Sypytkowski
@Horusiath
you can always use roslyn :P
Arjen Smits
@Danthar
@philiplaureano interesting thread on that topic: dotnet/orleans#694
Andrew Young
@ayoung
i'm looking for ideas on how to run integration tests for a cluster
this obviously will involve an environment where we will have a bunch nodes running but how do you test the behavior of the entire cluster as a whole?
Aaron Stannard
@Aaronontheweb
@ayoung multi-node testkit is how we do it