These are chat archives for akkadotnet/akka.net

1st
Mar 2015
Aaron Stannard
@Aaronontheweb
Mar 01 2015 02:12 UTC
thanks @jcwrequests! We still have unit 3 to come yet but that'll be a ways off - unit 2 covered a lot of stuff, especially for folks who want to do WinForms / WPF / client programming with Akka.NET
jcwrequests
@jcwrequests
Mar 01 2015 02:13 UTC
@Aaronontheweb Thanks again for sending the information on Resizer with Routing. The only problem is I can not figure out how to hook up the resizer to a ConsistentHashingGroup. The example you provided with with round robins. Any advice?
Aaron Stannard
@Aaronontheweb
Mar 01 2015 02:13 UTC
Resizers only work with ConsistentHashingPool :p
group routers don't manage their routees
however, for turning on a resizer with consistent hashing pools
let me see if I can find a config example for that - about to head out but I'm in the middle of updating all of the consistent hashing routers now
brought them up to code with JVM akka, includes fun stuff like virtual nodes
jcwrequests
@jcwrequests
Mar 01 2015 02:15 UTC
Okay got it. I will check that out. It should be fun once I get it hooked up to my eventstore with aggregates.
Once I get that done I may see if I have any Azure time left at work and try a stress test. My small Asus Ultra slim with an i5 is not the best for that sort of thing. Thanks again. I am will talk to you soon. Signing off here on the east coast.
One last thing I am blogging all about this experience so I may ping you with some research questions. Cheers and have a good one.
Håkan Canberger
@HCanber
Mar 01 2015 08:44 UTC
I'm seeing PR:s (like #689 and #691) with no explanation to why they are submitted. I think A PR should at least have a sentence or two explaining why the changes are being made and what the changes are, even if it's only white space changes. In the case of #689 several bugs were introduced. An explanation to why the changes were made could have saved me some time, instead I had to decipher what was done, and trying to figure out why it had been changed. Thoughts?
Bartosz Sypytkowski
@Horusiath
Mar 01 2015 08:50 UTC
@rogeralsing yep, old times ;)
Roger Johansson
@rogeralsing
Mar 01 2015 09:55 UTC
Håkan, to get the community onboard, the more interest the better, and even if a PR is just ws, if it makes the code cleaner, why not? And regarding the child stats bug, thats on us if we dont have test coverage for it, the intended behavior cant just be in someones head. We do need more tests, and now we found a place where we could improve it.
Bartosz Sypytkowski
@Horusiath
Mar 01 2015 11:57 UTC
we need to fix this damn test suite, I've got all the configurations of passing/failing tests, depending on FAKE test run, Resharper (with different configs) and maybe even phases of the moon
since tests are failing randomly for any reason
Roger Johansson
@rogeralsing
Mar 01 2015 12:10 UTC
Threads run slower during fullmoon, dont you know? :P
Håkan Canberger
@HCanber
Mar 01 2015 12:46 UTC
@rogeralsing Just to be clear, I'm not blaming the contributor, it's all on us. For not having tests, for not reviewing properly. As we know we don't have tests for everything, we have to be very restrictive when accepting PR:s in the core, and review everything thoroughly.
Håkan Canberger
@HCanber
Mar 01 2015 13:16 UTC
I'm not saying we should stop small PR:s, just saying PR's should contain something that in short says what's been done, and why.
Rodrigo Vidal
@rodrigovidal
Mar 01 2015 19:32 UTC
@HCanber Sorry about the PRs without description, they were supposed to be refactorings, so I thought they were self explaining. I'll try to do it right next time.
Aaron Stannard
@Aaronontheweb
Mar 01 2015 19:42 UTC
@Horusiath my theory on why the tests fail is that we're using, on purpose, relatively small Azure VMs - the smallest 2-core instance I could find
I picked that size for the build server because that's the sort of VM I'd expect a basic Akka.NET application to run on on Azure
on my build machine the entire test suite passes pretty reliably most of the time, although some of the same tests that fail on the build server occasionally fail here too but way less often
err, development machine :p - giant Asus gaming laptop with 4 intel core i7s
I think the stuff that fails is either inherently racy or we're running into some system resource issue that causes tests with realtime constraints (i.e. expect message within 3 seconds) to timeout
so I've tried doing stuff like adding explicit garbage collection during the shutdown or every TestKit run
to help eliminate GC pauses as a potential issue
and others
but still, these few tests are a pain in the ass ;p - I will work with you to help fix them and would love everyone else's help too
getting that green check mark at the end of each commit
makes everyone feel good :shipit:
Bartosz Sypytkowski
@Horusiath
Mar 01 2015 21:56 UTC
When I run whole test suite of almost 900 tests at once, even my 8 cores + 16GB are not enough -> it would be great if somebody would create a tool which run tests related only to changed code ;) <dreaming/project-idea>
btw. I occasionally find that JSON.NET is failing while trying to serialize messages with an error inside
maybe we should enable Exception(SerializationInfo info, StreamingContext context) to be reached from AkkaException and inheriting classes?
Roger Johansson
@rogeralsing
Mar 01 2015 22:04 UTC
:+1: on that
Roger Johansson
@rogeralsing
Mar 01 2015 22:45 UTC
@Aaronontheweb @HCanber @Horusiath and al I'm going on vacation for a week now, back next monday.
Aaron Stannard
@Aaronontheweb
Mar 01 2015 23:27 UTC
have fun @rogeralsing - we promise not to do anything crazy while you're gone (rewrite all major modules in VB.NET)
jcwrequests
@jcwrequests
Mar 01 2015 23:36 UTC
@Aaronontheweb When using resizers what information need to be defined in the config?
var config = ConfigurationFactory.ParseString(@"
routees.paths = [
""akka://MySystem/user/Worker1"" #testing full path
user/Worker2
user/Worker3
user/Worker4
]");
        using (var system = ActorSystem.Create("MySystem"))
        {

            var resizer = new DefaultResizer(3, 5, pressureThreshold: 1, rampupRate: 0.1d, backoffRate: 0.0d,
            messagesPerResize: 1, backoffThreshold: 0.0d);
            var pool = new ConsistentHashingPool(config);
            pool.Resizer = resizer;

            var router = system.ActorOf(Props.Create<TypedWorker>().WithRouter(pool));
Aaron Stannard
@Aaronontheweb
Mar 01 2015 23:36 UTC
I think you need to do resizer = enabled
let me double check
jcwrequests
@jcwrequests
Mar 01 2015 23:36 UTC
As an example of some sample code I am switching over
Aaron Stannard
@Aaronontheweb
Mar 01 2015 23:36 UTC
err, resizer = on
coffeeyesplease
@coffeeyesplease
Mar 01 2015 23:37 UTC
@Aaronontheweb LOL!!!
Aaron Stannard
@Aaronontheweb
Mar 01 2015 23:37 UTC
```xml
doh!
coffeeyesplease
@coffeeyesplease
Mar 01 2015 23:37 UTC
@rogeralsing I haven’t met you but sincerely hope you have a good time
Aaron Stannard
@Aaronontheweb
Mar 01 2015 23:37 UTC
akka.actor.deployment {
            /router1 {
                router = round-robin-pool
                    resizer {
                        enabled = on
                        lower-bound = 2
                        upper-bound = 3
                    }
                }
does that help @jcwrequests ?
as usual, I was only about 50% right with my first guess :p
jcwrequests
@jcwrequests
Mar 01 2015 23:39 UTC
yes But the router should be ConsistentHashingPool. Would that be thie consistent-hashing-pool
Aaron Stannard
@Aaronontheweb
Mar 01 2015 23:39 UTC
correct
we need to make this more obvious in the docs
router.type-mapping {
          from-code = "Akka.Routing.NoRouter"
          round-robin-pool = "Akka.Routing.RoundRobinPool"
          round-robin-group = "Akka.Routing.RoundRobinGroup"
          random-pool = "Akka.Routing.RandomPool"
          random-group = "Akka.Routing.RandomGroup"
          balancing-pool = "Akka.Routing.BalancingPool"
          smallest-mailbox-pool = "Akka.Routing.SmallestMailboxPool"
          broadcast-pool = "Akka.Routing.BroadcastPool"
          broadcast-group = "Akka.Routing.BroadcastGroup"
          scatter-gather-pool = "Akka.Routing.ScatterGatherFirstCompletedPool"
          scatter-gather-group = "Akka.Routing.ScatterGatherFirstCompletedGroup"
          consistent-hashing-pool = "Akka.Routing.ConsistentHashingPool"
          consistent-hashing-group = "Akka.Routing.ConsistentHashingGroup"
    }
jcwrequests
@jcwrequests
Mar 01 2015 23:40 UTC
Cool. It's appreciated. Actually this is really good process to go through. In fact I am in the middle of a blog post series and will be sure to add this information in.
Aaron Stannard
@Aaronontheweb
Mar 01 2015 23:41 UTC
awesome! looking forward to reading it
for reference, each of the major modules has one of these embedded into it as a resource https://github.com/akkadotnet/akka.net/blob/dev/src/core/Akka/Configuration/Pigeon.conf
under the configuration folder
this is where we set all of the system defaults for everything
think that's all of them
jcwrequests
@jcwrequests
Mar 01 2015 23:46 UTC
Awesome. Like I emailed you before I am using Akka, DDD with Aggregates and Cassandra as the back end for the Event Store so my next post will start incorporating Akka. In case you are interested it's http://message-flow.com. I am trying to put something out every two weeks as I add new code to my sample.
Aaron Stannard
@Aaronontheweb
Mar 01 2015 23:48 UTC
oh dude, that first example looks epic
nice
I have to run out for a bit, but this looks awesome
going to give it a read
jcwrequests
@jcwrequests
Mar 01 2015 23:48 UTC
Have fun