These are chat archives for akkadotnet/akka.net

18th
Feb 2015
Aaron Stannard
@Aaronontheweb
Feb 18 2015 05:49
@rogeralsing got the new build server up: akkadotnet/akka.net#642
Andrew Skotzko
@skotzko
Feb 18 2015 05:49
:clap: :sparkles: :clap:
Roger Johansson
@rogeralsing
Feb 18 2015 06:03
this is beautiful :) do you control the teamcity messages yourself or are they predefined?
Aaron Stannard
@Aaronontheweb
Feb 18 2015 06:26
they're predefined by the TeamCity Github Reporter module: https://github.com/jonnyzzz/TeamCity.GitHub
I had to create a separate login for @Petabridge-CI, our robot who does builds
doesn't use any webhooks or anything - polls the repo for changes and then logs in as itself and uses the reporting API to post results
Roger Johansson
@rogeralsing
Feb 18 2015 06:38
cool :)
Aaron Stannard
@Aaronontheweb
Feb 18 2015 06:39
so it looks like we have some racy unit tests
going to try to clean up some of the ones who are regularly failing
coolest part about this build system is that it uses auto-scaling on Windows Azure to dynamically allocate new agents when there's lots of build work to be done
agents are automatically terminated after 30 minutes of inactivity
and there can be up to three of them working in parallel
Roger Johansson
@rogeralsing
Feb 18 2015 06:41
nice :)
I'm going to send in an emergency PR for the async stuff soon... apparently the original code blew up if there was an exception thrown in the await block... I've fixed that now.
Aaron Stannard
@Aaronontheweb
Feb 18 2015 07:12
nice
I'm reviewing some of the tests that have failed across the past few builds
found a couple of tests that were just old - written before @HCanber ported most of the TestKit
playing with timeouts on others
Roger Johansson
@rogeralsing
Feb 18 2015 07:14
btw. did you find out what caused that mailbox stuff yesterday?
Aaron Stannard
@Aaronontheweb
Feb 18 2015 07:14
no, I haven't had a chance to look again yet
spent most of today on TeamCity stuff
tried to get all fancy with Docker and TeamCity on Linux + Mono
Roger Johansson
@rogeralsing
Feb 18 2015 07:15
oh :)
Aaron Stannard
@Aaronontheweb
Feb 18 2015 07:15
had to give up on that - I'll need to spend some more time hands on with docker before I can put anything into production yet
planning on getting back to work on the multi-node stuff (and that issue) as soon as we start seeing green check marks show up on the build server consistently
Roger Johansson
@rogeralsing
Feb 18 2015 08:05
btw. maybe we should build the build server also? little to no point in having the site generator live at drone.io
Aaron Stannard
@Aaronontheweb
Feb 18 2015 08:42
mean have the build server generate the website?
Roger Johansson
@rogeralsing
Feb 18 2015 08:44
yes, maybe not the same build script, but just to get rid of a dependency on drone.io.. more control
Aaron Stannard
@Aaronontheweb
Feb 18 2015 16:42
@rogeralsing we'll need to update the Azure VM image that the build agents use to install Node.JS (or any other runtime you need to do your site gen, like Ruby) but that's pretty straightforward to do
if you have some time today we can do a Skype call and set that up
Roger Johansson
@rogeralsing
Feb 18 2015 16:44
Sure thing :) Ill be online later, crazy baby here atm
Aaron Stannard
@Aaronontheweb
Feb 18 2015 16:45
no worries
I'll be here all day :p
going to work on cleaning up some of these specs
so it's kind of funny - a bunch of these specs only fail when they're run as test no. 600 something out of 800
if I run just the Akka.Remote module over and over and over by itself, can't get them to fail
tells me that it might be something like GC pauses that cause these tests with sensitive timeouts to fail sometimes
going to try to tune the timeouts some just to get them to pass more consistently
each test run is done on a dedicated server
but I intentionally picked a modest-sized VM - medium sized Azure Basic instance. 2 cores, 4 GB of RAM
if you're deploying a brand new Akka.NET app to Azure, that's probably the size of VM you'd start with
thought it might be cheating to use anything large than that
for unit tests
Roger Johansson
@rogeralsing
Feb 18 2015 16:48
It could be that some test overwrites some shared data, eg. Default deploy or similar. Even if they are all intended to be immutable
Aaron Stannard
@Aaronontheweb
Feb 18 2015 16:48
that would definitely be the case if parallel test runs were allowed
Roger Johansson
@rogeralsing
Feb 18 2015 16:49
Serialization doesnt care, it will happily reflect and overwrite stuff
Or if we have some broken copy method somewhere
Maybe force GC collect somewhere in the tests too?
Aaron Stannard
@Aaronontheweb
Feb 18 2015 16:53
that's a good idea
maybe we can add a hook to the end of each spec
forcing it to GC.Collect
I rewrote some of the TestKit stuff to add the BeforeTermination and AfterTermination hooks
I can code the GC.Collect stuff to happen after the AfterTermination block
Aaron Stannard
@Aaronontheweb
Feb 18 2015 17:00
trying it out locally with a GC.Collect
lol XUnit had an internal stackoverflow exception
oh XUnit, you so crazy
Roger Johansson
@rogeralsing
Feb 18 2015 17:05
hehe
we really need to get some better info on what akka actually does, I saw the reddit comments
we need an infomercial :)
Aaron Stannard
@Aaronontheweb
Feb 18 2015 17:07
"Akka.NET - it's like that really good laundry detergent you hear about on late night television, but for distributed computing!"
not what you had in mind? :p
Roger Johansson
@rogeralsing
Feb 18 2015 17:12
:)
Andrew Skotzko
@skotzko
Feb 18 2015 17:52
what, “it’s magical scaling sauce” doesn’t work? :worried:
Andrew Skotzko
@skotzko
Feb 18 2015 18:39
@all Akka.NET on frontpage of hacker news! https://news.ycombinator.com/news
Aaron Stannard
@Aaronontheweb
Feb 18 2015 18:41
woot!
Roger Johansson
@rogeralsing
Feb 18 2015 18:56
nice :)
Aaron Stannard
@Aaronontheweb
Feb 18 2015 19:31
looks like I'm going to be spending a lot of time abusing our build server today :p
I'm 99% sure there's something wrong inside the routing core though - race condition of some sort
only affects pool routers
I had found some issues inside the RoutedPoolCell or whatever it's called a while ago that never effectively killed off child routees
thought I had fixed all of them - might be some more though
Roger Johansson
@rogeralsing
Feb 18 2015 19:33
The resizer tests was a bit shaky in the past
Aaron Stannard
@Aaronontheweb
Feb 18 2015 19:34
I think the Resizer itself is shaky
I've reviewed the resizer code itself a number of times
there's one RouterSpec for evicting terminated routees that keeps failing too
which doesn't use a resizer
Roger Johansson
@rogeralsing
Feb 18 2015 19:35
do you have any contact with your ex marked up devs? it was Roman who wrote those right?
Aaron Stannard
@Aaronontheweb
Feb 18 2015 19:35
yeah, Roman wrote that code
he and I are good friends still
I think the DefaultResizer probably isn't the issue
I think it's a problem in the router cell somewhere
either that or the information the resizer gets from the mailbox is iffy
Aaron Stannard
@Aaronontheweb
Feb 18 2015 19:41
TailChoppingRouter spec has some issues too
Roger Johansson
@rogeralsing
Feb 18 2015 20:57
still only pool routers or does groups also seem to be broken?
Aaron Stannard
@Aaronontheweb
Feb 18 2015 20:59
not sure yet
started working on some other stuff and haven't had a chance to look back
Roger Johansson
@rogeralsing
Feb 18 2015 21:08
@skotzko btw. this entry in your docs is incorrect'ish:
What is ActorSelection?
This is using the actor path to get an ActorRef (handle to an actor). So instead of getting a handle to an actor by creating it, you're "looking up" the handle by its address. Kind of like looking up someone on Skype by their username.
the actorselection does not point to a specific actorref, it points to every actorref that matches the expression. wildcards are supported.. and it will also match two different actorrefs with the same name if the first one dies and is replaced (not restarted)
So it needs a bit of rewording imo
so its an expression that selects 0 or more actors
Andrew Skotzko
@skotzko
Feb 18 2015 23:23
@rogeralsing right you are. I'll see if I can update my reply to that guy to add the deeper explanation after the simple one