These are chat archives for akkadotnet/akka.net

23rd
Aug 2018
Vasily Kirichenko
@vasily-kirichenko
Aug 23 2018 08:44
@Aaronontheweb thanks!
Erik Følstad
@erikmafo
Aug 23 2018 11:53
Question regarding how to correctly implement Akka.Persistence.Journal.AsyncWriteJournal.WriteMessagesAsync. Since each AtomicWrite corresponds to either a call to Akka.Persistence.Eventsourced.Persist or Akka.Persistence.Eventsourced.PersistAll, is it guaranteed that each call to Akka.Persistence.Journal.AsyncWriteJournal.WriteMessagesAsync always will pass an IEnumerable of atomic writes with unique persistent ids?
Lutando Ngqakaza
@Lutando
Aug 23 2018 12:20
Hypothetical question, what happens if event journal for cluster sharding ends up getting erased while the cluster is running?
Aaron Stannard
@Aaronontheweb
Aug 23 2018 15:11
@Lutando for a short period of time, chaos possibly
which is why ultimately we're hoping to replace that piece of infrastructure inside Akka.Cluster.Sharding with Akka.Cluster.DistributedData
use replication instead of persistence as a means of making that shard placement data available throughout the cluster
Aaron Stannard
@Aaronontheweb
Aug 23 2018 16:52
@/all Akka.NET v1.3.9 is now live on NuGet: https://twitter.com/AkkaDotNET/status/1032671589089898497
Vasily Kirichenko
@vasily-kirichenko
Aug 23 2018 18:29
:+1:
Lutando Ngqakaza
@Lutando
Aug 23 2018 19:20
Thanks, I have not played with DistributedData yet might need to give it a spin
grantelgin
@grantelgin
Aug 23 2018 20:24
Has anyone seen issues with the Task -> ContinueWith -> PipeTo pattern preventing the Garbage collector from cleaning up? I'm using akka.net to update a legacy app that has many long running tasks that consume gigs of ram. The performance improvements are spectacular so far, but I've got a memory leak I assume is occurring because the PipeTo Extension maintains a reference to the task or to the task return object. My current solution is to force a GC Collect when ram gets close to max. I assume there must be a better solution I'm not aware of? Thanks for any help.
Aaron Stannard
@Aaronontheweb
Aug 23 2018 20:25
@grantelgin so my go-to for troubleshooting memory leaks
I run it with "snapshot when memory increases by more than %" mode
and let the thing run long enough to gather 3-4 snapshots
and then I use DotMemory's comparison tool to see which roots are responsible for the increases in memory over time
recently debugged an issue where AutoMapper was doing something crazy and allocating a bunch of rooted anonymous methods that never got GCed
it's possible that Task can close over things and not let it get GCed, depending on how the code is written
but before you go trying to rewrite some of that code, I'd recommend you get some data with the memory snapshots collected from DotMemory
and if you need help analyzing them, feel free to send me a copy of your dotmemory workspace with all of the snapshots - those files can get a little big so you may want to stick it in OneDrive or something and DM me a link
grantelgin
@grantelgin
Aug 23 2018 20:28
RIght on. Thanks Aaron. I'll re-enable Resharper Ultimate and give that a try
Aaron Stannard
@Aaronontheweb
Aug 23 2018 20:28
the stand alone DotMemory desktop app
is the right tool for the job there
IMHO
after you've compiled the exe
that's what will get you the snapshots over time et al
I think it works by just grabbing the ETW counters emitted by the process it launches or attaches to
grantelgin
@grantelgin
Aug 23 2018 20:30
Great Thanks.
Aaron Stannard
@Aaronontheweb
Aug 23 2018 20:34
Akka.Logger.Serilog is now upgraded for v1.3.9 as well: https://github.com/akkadotnet/Akka.Logger.Serilog/releases/tag/v1.3.9
fixes a regression I introduced in v1.3.6 :(