These are chat archives for akkadotnet/akka.net

9th
Feb 2016
John Nicholas
@MrTortoise
Feb 09 2016 00:08
feels like a copy test output into input test
Mikey
@BrainSlugs83
Feb 09 2016 02:33
Logged a new bug with remoting / clustering #1696.
Sean Gilliam
@sean-gilliam
Feb 09 2016 03:00
@MrTortoise it's part of the new API approval process http://getakka.net/docs/akka-developers/public-api-changes
Mikey
@BrainSlugs83
Feb 09 2016 04:10
Closed #1692, it was total PEBKAC, thanks for the help @rogeralsing. :-)
donmikel
@donmikel
Feb 09 2016 07:40
@BrainSlugs83 It's duplicate #1554
Bartosz Sypytkowski
@Horusiath
Feb 09 2016 08:07
I don't remember who asked me about rebalancing in cluster sharding? @trbngr ?
alexgoeman
@alexgoeman
Feb 09 2016 09:07
@Horusiath related to persistence and async. Fact that Persist is not returning a task I can solve myself, but I notice some internal behaviour and that is that Persist method is blocking processing next messages until event gets stored and then first calls the handler. And that the event of having stored the event is also passed back to inbox and gets processed before other messages. This makes that Persist can provide async behaviour for the saving of the events but only if the inbox does not get blocked (becomes relevant later). I think this means I cannot process my message with a async function (meaning having a function that does other async behaviour besides the Persist method. So If I would have an async method then my mailbox gets unlocked after first async method being called and then other messages gets processed which is not what we want because of the "single execution stream model". I looked at how ReceiveActor was handling this case, and it used "ActorTaskScheduler.RunTask" to execute some async method. Internally this method locks the inbox processig until the async method stops. When using this technique (ActorTaskScheduler) actor stopped processing, probably because of the locked inbox and not able to process to event notifying that event has been saved. So only way I see to resolve this is by having Persist using async or having the Persist method another way in , so it gets not blocked? Other suggestions are welcome or if something is not clear please let me know. The summary is I think that async methods are not supported when using Persistence ?
Bartosz Sypytkowski
@Horusiath
Feb 09 2016 13:41
@alexgoeman Persist doesn't support async/await only command handler itself is supported, but still not advised - using async/await cripples performance of akka actors, this is why we have PipeTo for. What I was asking for was, could you describe your case, so we could advice you some pattern to handle it?
voltcode
@voltcode
Feb 09 2016 14:00
@Aaronontheweb I think I made some progress - I created a clusterWatchdog actor that periodically queries cluster.ReadView and if it finds the main node unreachable, it tries to do cluster.JoinSeedNodes(<main node address>). The cluster works more reliably in face of non-seed failure now, however I think it's a too heavyweight approach for such problem. Now cluster seems connected after restarting a node but sometimes it seems that the Readview information is inaccurate - one member is sometimes marked unreachable but messages flow from it....
so my watchdog calls joinseednodes many times, luckily this is ignored if join was successful
voltcode
@voltcode
Feb 09 2016 14:10
really weird that manual joinseednodes isnt working
voltcode
@voltcode
Feb 09 2016 14:30
damn, further tests show that this is not sufficient, seems like watchdog has to restart actor system - any hints on how to do it best ? I suppose I can't do it from within actor's OnReceive, how best to proceed in such case without restarting entire IIS app pool ?
John Nicholas
@MrTortoise
Feb 09 2016 14:54
@voltcode if you distill your problem down to a small example im sure someone can be constructive, what you are asking is all v abstract for me atm
Christian Sparre
@christiansparre
Feb 09 2016 19:42
Prototyping a reimplementation of a somewhat complex command/event processing flow using Akka, every day I keep getting impressed. Right now 1 hour in I have a simplified version of most of the flow running using the TestKit :) yay Akka!
Bartosz Sypytkowski
@Horusiath
Feb 09 2016 20:04
@christiansparre you can't even imagine, how nice is to hear something like that :)
Christian Sparre
@christiansparre
Feb 09 2016 20:06
I really wish Akka.net would have been on our radar a year ago
Also just found out that you can use the new "core" project.json to manage dependencies in pre core projects. This is turning out to be a very nice tuesday... (http://blogs.msdn.com/b/lucian/archive/2015/08/19/using-project-json-for-other-project-types.aspx)
voltcode
@voltcode
Feb 09 2016 22:25
@Aaronontheweb @MrTortoise I created the minimal sample for presenting my current issue with Akka.Cluster https://github.com/voltcode/AkkaSample
steps to reproduce the problem are: 1.launch the service (best with CTRL+F5 so it stays outside debugger). 2. set the web app as startup project 3. launch the web app. 4. observe in console output of the service that cluster is formed. 5. kill all iis express apps, observe in the console that web app is dead 6. start the web app again 7. expected: smooth cluster healing, actual: repeating "Up" messages intertwined with errors
it's bed time for me now;) I'll write the steps in more detail on github tomorrow if necessary. I would be very grateful if someone more experienced with akka than me could have a look and tell me whether its an akka bug or error in minimalist configuration
please note that the only thing the code in the apps is doing is creation of the actor system. the config has hardcoded ports so that rejoin is possible.
voltcode
@voltcode
Feb 09 2016 22:33
2016-02-09 23_33_18-Voltcode.AkkaSample.Service.png
heres screenshot of my service log
Aaron Stannard
@Aaronontheweb
Feb 09 2016 22:35
ok, I'll take a look when I have some time
voltcode
@voltcode
Feb 09 2016 22:35
I'm willing to experiment with settings, etc. any guidance is greatly appreciated :)
thanks @Aaronontheweb