Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 17:02
    IgorFedchenko commented #3615
  • 16:29
    IgorFedchenko commented #3615
  • 16:29
    IgorFedchenko commented #3615
  • 13:20
    IgorFedchenko commented #3615
  • 13:15
    IgorFedchenko commented #3615
  • Jan 28 22:17
    Aaronontheweb edited #4152
  • Jan 28 22:16
    Aaronontheweb milestoned #2750
  • Jan 28 22:16
    Aaronontheweb demilestoned #2750
  • Jan 28 22:15
    Aaronontheweb milestoned #4007
  • Jan 28 22:15
    Aaronontheweb demilestoned #4007
  • Jan 28 22:14
    Aaronontheweb synchronize #4086
  • Jan 28 21:49

    Aaronontheweb on 1.4.0-beta4

    (compare)

  • Jan 28 21:47

    Aaronontheweb on dev

    V1.4.0 beta4 release notes (#41… (compare)

  • Jan 28 21:47
    Aaronontheweb closed #4174
  • Jan 28 21:45

    Aaronontheweb on dev

    modified build script so if the… (compare)

  • Jan 28 21:45
    Aaronontheweb closed #4175
  • Jan 28 21:42
    Aaronontheweb labeled #4175
  • Jan 28 21:42
    Aaronontheweb opened #4175
  • Jan 28 21:02
    Aaronontheweb synchronize #4174
  • Jan 28 21:02
    Aaronontheweb opened #4174
Natan Vivo
@nvivo
It could work. One of the things I thought is just using that code and tweaking some parameter to match the usage. ConcurrentQueue has a lot of parameters inside that were probably calculated for the most general cases
as I understand, what it does inside is that it creates a 32-item array for each segment, and it grows by linking them. Each segment has its lock, so you only lock if you are modifying that 32-item boundary
From the profiler, even with the 4th iteration (10 million actions I guess?), the time it wasted on spinwait was about 4% only. 30% was just moving through segments
so, in theory reducing the # of segments (that is - increasing the segment size) could help...
but at some point I wonder if you're not optimizing only for the benchmark
in the case of DequeueAll, if it needs to loop and lock through all segments, there might not be a lot of gain. But it could get the entire segment as an array and work those before going to the next
Aaron Stannard
@Aaronontheweb
@Horusiath @rogeralsing 1.0 should be ready to go shortly
1-2 weeks IIRC
Bartosz Sypytkowski
@Horusiath
Recently I've asked myself two basic questions, I have hard time to find answers for:
  1. Why JSON.NET? Why not for example protocol buffers by default?
  2. Why there is no globally configurable receive timeout?
Roger Johansson
@rogeralsing
  1. because of friction, json.net is pretty much the only serializer that allows serializing messages of any shape or form by default w/o altering constructors, adding attributes or interfaces
and for surrogates, surrogate support is mandatory as ActorRef needs special handling to be resolved into a real actorref.. and it can be embedded deeply inside another message
I do want to get rid of Json.NET, but most other serializers lack some features
e.g. polymorphic serialization
Bartosz Sypytkowski
@Horusiath
and what about 2nd? Don't you think we should add a globally configurable HOCON option for this? I think it's very risky that now we don't have any kind of timeout configured by default. It's not safe, if user forgot at any point to set receive timeout, his/her service could possibly hang forever
Roger Johansson
@rogeralsing
Im not following here, you mean a timeout for the receive method? I thought you were talking about ReceiveTimeout, the callback feature for actors
if you mean a way to ensure that no receive method runs forever.. I have looked into this, but there is no fast way to deal with it. there would need to be some supervisor thread that polls that no thread have been executing a receiveblock for too long
Roger Johansson
@rogeralsing
there is a dispatcher setting "deadlinetime" which decides for how long each mailbox run may run, but that does not deal with frozen/zombie threads. it only decied when the mailbox run should exit a batch op
During the very early stages of akka.net, I put together this: https://gist.github.com/rogeralsing/8472797 it does what you want, but expensive, and the implementation would beed to be cleaned
Bartosz Sypytkowski
@Horusiath
it think that the most common case is Ask - AFAIK it doesn't have any timeout by default
Michal Franc
@michal-franc
there is no default timeout i just crashed my VS because of that, due to infinite ncrunch test running and running :)
Roger Johansson
@rogeralsing
thats pretty much the same as for any code. you cant make a function break after x time in oop either
Dave Bettin
@dbettin
I plan on using Akka.net; Is it a terrible idea to read Akka in Action? I am concerned it will lead me down a path of confusion.
Roger Johansson
@rogeralsing
No, its a great book, actually I'm reading it right now, halfway through and everything applies except for the special Scala specific stuff like their Future library
Dave Bettin
@dbettin
Perfect! Thanks!
Bartosz Sypytkowski
@Horusiath
is there any way to override actor system settings after it's created?
Bartosz Sypytkowski
@Horusiath
I've got a lot freakin problems with persistence specs, when I run them one by one, it's all ok, when I run then all at once, a random failures occurs almost everytime
Roger Johansson
@rogeralsing
Depends on what settings you want to change. the core settings are parsed only once at start up, but you can inject top level fallbacks (you do that in f# module, right?)
Bartosz Sypytkowski
@Horusiath
@rogeralsing nope, just for some specs (I've noticed that one of my tests using TestLatches was hanging when message serialization was turned on)
but eventually I just moved it to separate spec class
Roger Johansson
@rogeralsing
I've seen a similar problem before, back then, it was that some static resources, like NoRouter or DefaultDeploy or whatver, was overwritten by the serializer .. e.g. some primitives took a static resource as an input argument, then the serializer overwrote the properties of the primitive, which was backed by the static resource, and tada , the static resource was corrupted
could that be a similar problem here?
e.g. public Props() : this(Some.Static.Resource) {} then when the deserializer tried to deserialize an object with such ctor, the injected resource would be corrupted
Bartosz Sypytkowski
@Horusiath
I know that test latch uses System.Threading.CountdownEvent so I supose it may be not safe to try to serialize/deserialize it
Roger Johansson
@rogeralsing
were you passing a testlatch object as a message?
Bartosz Sypytkowski
@Horusiath
I have to for test verification ;)
Roger Johansson
@rogeralsing
and if so, shouldnt that be marked with the INoSerializationNeeded or whatever the name
NoSerializationVerificationNeeded
that will ofc not help if the testlatch is part of a bigger message, but if it is the root, that would make it bypass serialization in inproc systems
Bartosz Sypytkowski
@Horusiath
it worked, I didn't know about that interface
Roger Johansson
@rogeralsing
its in the scala version too
neat :) so for persistence, we just need to start making providers? and follow typesafes lead on how to take it out of beta (?)
Bartosz Sypytkowski
@Horusiath
not all of exisiting tests are passing yet (6 out of 82 total are marked to be skipped, I need to fix them probably)
beside that, I'm currently during writing some tutorial about how to write custom persistence plugins
Roger Johansson
@rogeralsing
So what probiders do you think are the most important ones? SqlServer, different Azure storages, flat file?
Bartosz Sypytkowski
@Horusiath
also I'm in midway of creating Akka.Persistence.SqlServer plugin
Roger Johansson
@rogeralsing
:+1:
Bartosz Sypytkowski
@Horusiath
those two definitely yes, snapshot store for local file system already exists (I've rewritten it <not pushed yet>). I don't know if some other providers should be included to akka.net core repository
but I think, that @Aaronontheweb or @jcwrequests may want to try to implement Cassandra plugins for Akka.Persistence
I also hope, that when it will be ready to drop -Pre flag, RavenDB and EventStore creators will want to integrate their services too
jcwrequests
@jcwrequests
@horusiath