Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 21:39
    Aaronontheweb synchronize #4037
  • 21:39
    Aaronontheweb ready_for_review #4037
  • 19:57
    Aaronontheweb synchronize #4037
  • 19:53
    Aaronontheweb commented #4037
  • 19:51
    Aaronontheweb opened #4037
  • 19:08
    Aaronontheweb synchronize #4036
  • 19:02
    Aaronontheweb opened #4036
  • 16:48
    IgorFedchenko synchronize #4022
  • 16:25
    Aaronontheweb commented #4035
  • 16:24
    Aaronontheweb commented #4022
  • 16:23
    Aaronontheweb labeled #4035
  • 16:23
    Aaronontheweb labeled #4035
  • 16:23
    Aaronontheweb opened #4035
  • 16:21
    Aaronontheweb commented #4022
  • 15:54
    Aaronontheweb commented #4022
  • 15:49
    IgorFedchenko commented #4022
  • 15:47
    IgorFedchenko synchronize #4022
  • 15:13

    dependabot-preview[bot] on dev

    Bump Hyperion from 0.9.10 to 0.… (compare)

  • 15:13

    dependabot-preview[bot] on nuget

    (compare)

  • 15:13
    dependabot-preview[bot] closed #4034
Lutando Ngqakaza
@Lutando
thanks @chrisjhoare I got it working with connection-string = ""Data Source=sharedmemdb;Mode=Memory;Cache=Shared""
Vasily Kirichenko
@vasily-kirichenko
@Horusiath so, if I have three Lighthouse nodes, ip1, ip2, ip3 all of them having the same seed nodes list in their akka.hocon: [ "ip1", "ip2", "ip3" ], then ip1 node must be started first, otherwise, if, for example, ip2 starts first, then ip1 will form another independent cluster. Am I right?
Bartosz Sypytkowski
@Horusiath
@vasily-kirichenko I could be wrong, but I think it works like that. I don't know what's the current akka JVM behavior, but IMHO this is something to be improved. I think that the best strategy is to have "self" as the last seed-node member and attach jittered delay (eg. randomized from 0-10 sec) before starting the actor system.
Belén
@belenmorenate
Hi all! it might be a difficult question to answer but does anybody have an idea of when the Akka.Cluster.Sharding will end its beta period?
Aaron Stannard
@Aaronontheweb
@belenmorenate at the end of Akka.NET v1.4.0
so it should be out of beta soon
Zetanova
@Zetanova
@vasily-kirichenko i tested it 1-2 weeks ago, if you have 3 seed nodes u need to change the seed order, so that the self-entry is at the end, else u will get a split instantly if the first seed node restarts. Node2-3 are UP and valid. Node1 restarts and joins itself instantly and waits for other nodes to connect "init-face".
Zetanova
@Zetanova
I am using a ClusterRouterGroup router with currently one routee. But if the routee node restarts and joins the cluster. I looks like that no message are not delivered there anymore. If a node goes down should the routee no be removed and if the node rejoins readded to the ClusterRouterGroup ?
D'Arcy Rittich
@drittich
A couple of questions around Hyperion I was unable to find answers for:
  • Why the fork from Wire, how does it differ?
  • Will it remain binary-compatible with Wire? Asking because ServiceStack uses Wire and the option of direct data exchange might be useful.
  • Does this still hold true? https://gitter.im/akkadotnet/akka.net?at=59bec683177fb9fe7ed1bf76 - I don't intent to use it for persistence, but I could see using in a gateway MQ, which would have the same issues (although probably less likely to occur).
Vasily Kirichenko
@vasily-kirichenko
@Zetanova thank you
Chris Hoare
@chrisjhoare
Wonder if anyone can help explain how the ActorBase.Context works. I'm doing some async work which will use Context.Sender to reply. Am I right in thinking if I grab the context before it will remain correct for the actor? If I do it lazily i get "There is no active ActorContext, this is most likely due to use of async operations from within this actor"
Zetanova
@Zetanova

@chrisjhoare Context is realized over thread-static fields. If you are using any value from Conext in an other thread (async or not) u will need to copy it into the state.

var sender = Context.Sender;
myTask = Task.Run(async () => {   
   sender.Tell("hallo");
});

In general u can use the IActorRef.PipeTo(...) extensions to send back a message/result on completion.

Task.Run(async() => {
   return "hello";
}).PipeTo(Context.Sender);
Bartosz Sypytkowski
@Horusiath
@drittich
  1. Back in the days Wire was converted to use GPL licensing model which is a no go for most commercial stuff. It was forked prior this point, and that's how Hyperion was made.
  2. It won't be binary-compatible. Changing the encoding is one of the major tasks to be done there.
  3. Yep. The general premise is not to use it for data to be stored/replayed for long time. Once encoding will change it will be hard to read older scheme.
Chris Hoare
@chrisjhoare
thanks @Zetanova - thats what I was hoping to be the case
Zetanova
@Zetanova
@Horusiath I have an stream that sinks to a remote actorRef. If the streams throws an error then the Exception is send to the remote actor and crashes the node (because of some serializing error in json). Is here a away to transform an exception to an custom-error-message ?
and still down the stream itself
Zetanova
@Zetanova
I am blind a bit, there is SelectError to trasnform an exception
Zetanova
@Zetanova
in Sink.ActorRefWithAck is an onFailureMessage argument but it is missing in Sink.ActorRef
Bartosz Sypytkowski
@Horusiath
@Zetanova yes, we probably should add it.
I see it in akka jvm docs, I guess it may have been added after we ported that part
Zetanova
@Zetanova
@Horusiath If possible to remove the argment type in SelectError(Func<Exception, Exception> transform) to SelectError(Func<Object, Object> transform). Exceptions and transparent remoting are not working well together. It is always a big source of a failure/crash. (since net1.1)
i create a topic akkadotnet/akka.net#3903
What i currently see is that RemoteDeploy and Streams have this behavior that both can pass unknown-exception-types to remote systems/nodes
Vladimir Boiarkin
@vladmir-boy
Hi. I have the question. we developed new transport for our Akka.NET application. Can we deploy it into existing system without downtime?
Bartosz Sypytkowski
@Horusiath
@vladmir-boy what do you mean by new transport?
Vladimir Boiarkin
@vladmir-boy
we implemented gRPC remote transport instead of dotNetty
Bartosz Sypytkowski
@Horusiath
dotnetty is using TCP layer, gRPC is build on top of HTTP 2 (which is build on top of TCP). So no, nodes using two different transports will not be able to communicated with each other - different binary formats.
If you'd replace dotnetty with another TCP implementation, it would be possible
Vladimir Boiarkin
@vladmir-boy
@Horusiath thanks! is there away to plug translator from one binary format to another somewhere ?
Bartosz Sypytkowski
@Horusiath
@vladmir-boy yes it's possible, but I wouldn't assume it's an easy task. I think, you should be able to get all necessary documentation here: https://getakka.net/articles/remoting/transports.html#using-custom-transports
Pedro Yan Ornelas de Oliveira
@pedroyan
Hi everyone! Noob question here: How can I log all uncaught exceptions thrown on a certain actor? I know I can override the PreRestart() method and log the exception there, but that wouldn't log exceptions that result on the actor stopping
Bartosz Sypytkowski
@Horusiath
@pedroyan all exceptions thrown in actors are logged by default
Felipe Muniz
@Mun1z
Anyone using the solution on online game servers? I met the actor model a short time ago, I'm studying to see if it's worth including it in my case.
Zetanova
@Zetanova
@Mun1z Most likely yes, but it depends of the game. The main benefit will be that there will be no locks (synchronisation) for user-states and world interactions. Clients would be served as fast as possible. But if your game-server/client can handle everything in a single message loop on 3Ghz, i want border that much to replace it with actor model.
HermansG
@HermansG
Probably a trivial question but I forgot the answer. Suppose in the mailbox of an actor we have messages m0 .. m5 all different object types.
m0 is delivered first and the state of the actor changes to a state that only has a Receive defined for the type of m5.
I forgot what happens to the messages m1..m4. Are they kept in the mailbox or are they sent to the actor and not processed?
Arjen Smits
@Danthar
They are processed and you receive warnings.
Zetanova
@Zetanova
@HermansG Every message is picked from the mailbox and get processed in order. If u want to postpone messages, you will need to resend it to the current actor again
Context.Self.Tell(msg, Context.Sender);
or stash it with IWithUnboundedStash and Stash.Stash(); and after Stash.UnstashAll();
HermansG
@HermansG
@Danthar "They are processed" but in Unhandled aren't they, because there is no Receive.
HermansG
@HermansG
@Zetanova that scenario for me is perhaps too advanced but thank you
Arjen Smits
@Danthar
Hermansg yes you get an unhandeld message. And yes the stashing is a way to handle this. It's very easy to apply. Check out the docs for more info 😊
Dan
@ctrlaltdan

Hey I have a question about event adapters and their support across persistence plugins. In short, I am trying to use an event adapter to serialise protobuf-net dtos using InMemory, Sql and Mongodb (through cosmosdb/documentdb emulator engine). I'm unsure if my event adapter implementation is incorrect or if there is a problem with the compatibility among different persistence drivers.

I have put together a solution with each of the three mechanisms (with tests) here:
https://github.com/ctrlaltdan/akka-event-adapters

Any help would be appreciated :D

Zetanova
@Zetanova
@ctrlaltdan ""System.Byte[], System.Private.CoreLib"" = protobuf looks strange, your code is only handle known and attributed/tagged types
Zetanova
@Zetanova
i am not sure, but what i think is happening that you serialize DtoA to byte[]+manifest
and after the persistent system passes byte[] again to the eventadapter and u are returing byte[]+String.Empty
on loading, you will get byte[]+string.empty again back
just remove ""System.Byte[], System.Private.CoreLib"" = protobuf
I have an other question and i fought that i resolved it, I have in a k8s cluster 3 seed nodes
i am using static-quorum of size 2 as split blrain resolver
Zetanova
@Zetanova
i had the problem that on an rollingupdate of the seed-nodes and a static seed node list, the first node (node0) always joint itself and build a new cluster, but node1 and node2 where up and still had the valid old cluster.