These are chat archives for akkadotnet/akka.net

16th
Apr 2015
Chris Martin
@trbngr
Apr 16 2015 00:14
I am. It's very stable. Hasn't crashed on us ever in 3 years. On Mobile now. Will be back soon
Andrew Skotzko
@skotzko
Apr 16 2015 01:33
@trbngr awesome!
Chris Martin
@trbngr
Apr 16 2015 01:43
Has anyone checked out my repo yet? I have some questions.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 01:43
@trbngr yessir, poked around your example and some of your classes
looking at the aggregate stuff now
Chris Martin
@trbngr
Apr 16 2015 01:44
so there's a few problems.
1: Projections get consumed out of order.
I assumed that I could implement events with IConsistentHashable and use a router but now everything is going to deadletter
I'll push
Aaron Stannard
@Aaronontheweb
Apr 16 2015 01:45
ok, let me know when it's updated
Chris Martin
@trbngr
Apr 16 2015 01:46
pull
code in question: AggregateFactory line 16
Aaron Stannard
@Aaronontheweb
Apr 16 2015 01:46
found your problem
on that line :p
I'll add a comment to your diff
Chris Martin
@trbngr
Apr 16 2015 01:47
awesome
I'm loving this project btw. It's quite the paradigm switch, but really simple once you get your head around it.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 01:54
left you a detailed note on the diff of your commit
Chris Martin
@trbngr
Apr 16 2015 01:55
looking now
I like the latter syntax as well. ;) Thx. Trying it out....
HOT DAMN!!! This is awesome!
You have no idea how much code I'll be able to throw away using akka! LOL
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:05
whiskey-approval.gif
Chris Martin
@trbngr
Apr 16 2015 02:05
now I need to wrap my head around akka.remote or cluster. ....and config
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:06
actors atomize code phenomenally well
Chris Martin
@trbngr
Apr 16 2015 02:06
no shit. This is truly amazing
Andrew Skotzko
@skotzko
Apr 16 2015 02:06
@trbngr let the fun begin...
Chris Martin
@trbngr
Apr 16 2015 02:06
haha
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:06
I sadly don't have the clarity of thought to explain why exactly
Chris Martin
@trbngr
Apr 16 2015 02:06
doesn't matter...I have code boner
Andrew Skotzko
@skotzko
Apr 16 2015 02:06
oh my god.gif
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:07
ok, that is just amazing ROFL
Chris Martin
@trbngr
Apr 16 2015 02:07
haha
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:09
well thanks for putting together the first full-fledged CQRS example with Akka.NET
looks super cool
mind of I tweet it out and let the internets know about it?
Andrew Skotzko
@skotzko
Apr 16 2015 02:10
AND for writing one for eventstore
tis dope
Chris Martin
@trbngr
Apr 16 2015 02:10
My pleasure (for real). We're looking at replacing our aging with Akka.net and I think I'm gonna green light it
*aging system
Andrew Skotzko
@skotzko
Apr 16 2015 02:11
:thumbsup:
Chris Martin
@trbngr
Apr 16 2015 02:11
I'll clean up the Akka.Persistence.EventStore and publish it to it's own repo. Or should I fork and put it in contrib?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:12
for now put it in its own repo
Chris Martin
@trbngr
Apr 16 2015 02:12
ok
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:12
we haven't agreed yet on which implementations we want to make part of the core repo
other than SQL Server
Chris Martin
@trbngr
Apr 16 2015 02:12
fair enough
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:12
(largely because agreeing to make it part of the core repo also means having the testing infrastructure for it)
Chris Martin
@trbngr
Apr 16 2015 02:13
Right right....
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:13
@skotzko and I are planning on doing a Cassandra one at some point
and I've had like 4-5 people ask about MongoDB
Chris Martin
@trbngr
Apr 16 2015 02:13
^ even more code boners :P
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:13
that is now part of my lexicon going forward
Chris Martin
@trbngr
Apr 16 2015 02:13
great. It's now a thing
NOW it's a thing
Roger Johansson
@rogeralsing
Apr 16 2015 02:16
Hehe
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:17
oh god lol
Andrew Skotzko
@skotzko
Apr 16 2015 02:17
@rogeralsing you cheeky swede.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:17
I'm dying of laughter here
seeing that show up again in my feed with your comment @rogeralsing
Chris Martin
@trbngr
Apr 16 2015 02:20
LMAO!!!
Any guidance on Persistence testing? I see the TestKit, is that where I should start looking?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:23
@trbngr not personally, but take a look at what @Horusiath did for SQL Server on this PR: akkadotnet/akka.net#842
Chris Martin
@trbngr
Apr 16 2015 02:23
will do
Nice. very straight forward
Sean Gilliam
@sean-gilliam
Apr 16 2015 02:26
first time logging into gitter and i see code boner. hehe
Chris Martin
@trbngr
Apr 16 2015 02:27
spread the word ;)
Scott Meyer
@scottmeyer
Apr 16 2015 02:27
Don't mean to interrupt the conversation, but it seems like there are a few people active atm. I intend to use akka.net in a production environment implemented over the next few months. Might there be someone I can email some ideas to for evaluation purposes and to spot check some implementation details?
Andrew Skotzko
@skotzko
Apr 16 2015 02:29
@scottmeyer yeah, that’s something @Aaronontheweb and I do. Just shot you an email
Scott Meyer
@scottmeyer
Apr 16 2015 02:36
Great! I'll get an email out to you tomorrow
Andrew Skotzko
@skotzko
Apr 16 2015 02:36
cool, sounds good
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:40
@rogeralsing fixed the PinnedDispatcher, but I won't be able to address the cleanup issue without rearchitecting how dispatchers get attached to actors
need to be a part of the actor cell
part of the cleanup process has to involve the actor releasing and decomissioning its dispatcher
in the event of a ForkJoinDispacther, ThreadPoolDispatcher, that command gets ignored
but a CallingThreadDispatcher and a PinnedDispatcher both need to be released
since there's a new instance of them that belongs exclusively to the individual actor
right now the dispatcher sits between the mailbox and the actor cell
| Mailbox | --> | Dispatcher | ---> | Cell | ---> | Actor |
need to make it | Mailbox | --> | Cell | --> | Dispatcher | ---> | Actor | which is how it's done on the JVM IIRC
that way our dispatchers are architected is still pretty fundamentally different from theirs, but I attribute that to the fact that they have to do a lot more explicit stuff to work with ExecutionContext
we get a bit of a free lunch there
Roger Johansson
@rogeralsing
Apr 16 2015 02:45
yes, some of their mess is due to the BalancedDispatcher also, where actors can share a single mailbox
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:45
which is just asking for trouble
(IMHO)
Joshua Benjamin
@annymsMthd
Apr 16 2015 02:46
that's what routers are for:)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:46
@annymsMthd exactly
Roger Johansson
@rogeralsing
Apr 16 2015 02:46
yes, not sure why one would ever want that, if you need to spread load over actors -> routers
I dont know if balanced dispatcher have been obsoleted maybe
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:47
actually you know what
the actor cell looks like it already knows about the dispatcher
Roger Johansson
@rogeralsing
Apr 16 2015 02:48
yes
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:48
so that might help
Roger Johansson
@rogeralsing
Apr 16 2015 02:48
mailbox -> cell -> dispatcher when we invoke stuff
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:48
ah, because all I really care about - and why I bring this up
is that once I shut down the threadpool inside a PinnedDispatcher or whatever
the PinnedDispatcher shouldn't have to worry about the mailbox still trying to invoke it
once the mailbox gets terminated I should be free to destroy the dispatcher
for these special dispatchers that have a 1:1 relationship with actors
where does that abstraction belong? ActorCell or Mailbox?
because it seems like the cleanup belongs to the ActorCell - but the gating of messages (think: race condition)
is still something that needs to happen somewhere
actually... ok... I'm an idiot
Roger Johansson
@rogeralsing
Apr 16 2015 02:51
shouldnt that go in the mailbox cleanup trigger
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:51
yeah, I think I've got this figured out
Roger Johansson
@rogeralsing
Apr 16 2015 02:51
mailbox cleanup -> something something :)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:52
just needed to talk it out
try
                //TODO: Akka Jvm: this is done in a call to dispatcher.detach()
                {

                    //TODO: Akka Jvm: this is done in a call to MessageDispatcher.detach()
                    {
                        var mailbox = Mailbox;
                        var deadLetterMailbox = System.Mailboxes.DeadLetterMailbox;
                        SwapMailbox(deadLetterMailbox);
                        mailbox.BecomeClosed();
                        mailbox.CleanUp();
                    }
exactly what I was looking for
(from ActorCell.DeathWatch)
Roger Johansson
@rogeralsing
Apr 16 2015 02:56
btw. I managed to get that SO question to run some 50 times faster'ish
Aaron Stannard
@Aaronontheweb
Apr 16 2015 02:56
the dispatcher one?
Roger Johansson
@rogeralsing
Apr 16 2015 02:57
the problem in his case isnt really the dispatcher, its that the mailbox is emptied for each iteration, causing a threadpool schedulation each time
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:00
ah got it
I couldn't make sense of the F#
I'm still a long ways off from being literate in it
Roger Johansson
@rogeralsing
Apr 16 2015 03:01
I used it a bit a few years ago, built a javascript clone in F# :) but havent touched it in years now
Sean Gilliam
@sean-gilliam
Apr 16 2015 03:04
that sounds painful
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:22
@rogeralsing we're good to merge the state container changes
IMHO
Roger Johansson
@rogeralsing
Apr 16 2015 03:22
ok, ill move it over to a separate file and fix the docs for it
btw. xunit, whats the state of xunit in general, I know 2.0 is out there, but is there any action or is it a one man show now adays?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:24
it's Brad Wilson and one other guy as far as I know
Roger Johansson
@rogeralsing
Apr 16 2015 03:24
and if so, what are people using instead of it?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:24
I've been a hardcore NUnit guy forever pretty much
it just works
Roger Johansson
@rogeralsing
Apr 16 2015 03:25
we should look over the xunit story because it have been a bit painful so far for us imo.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:26
you mean XUnit isn't supposed to crash 2/5 processes during my multi-node test runs?
Sean Gilliam
@sean-gilliam
Apr 16 2015 03:26
i've never had any problems with NUnit
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:32
ok, fixed all of the PinnedDispatcher stuff
that was actually super easy
decided to just standardize on using a DedicatedThreadPool with a pool size of 1
@rogeralsing it should be really easy to modify the IScheduler to be able to run on the dispatcher BTW
just looking at the code now while the suite runs
Action<Task> executeAction = null;
            executeAction = t =>
            {
                if(token.IsCancellationRequested) return;
                try
                {
                    action();
                }
                catch(OperationCanceledException) { }
                //TODO: Should we log other exceptions? /@hcanber

                if(token.IsCancellationRequested) return;

                Task.Delay(interval, token)
                    .ContinueWith(executeAction, token, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Current);
            };
            Task.Delay(initialDelay, token)
                .ContinueWith(executeAction, token, TaskContinuationOptions.OnlyOnRanToCompletion, TaskScheduler.Current);
can probably just provide an overload that takes an explicit scheduler
or a dispatcher
rather than depending on TaskScheduler.Current
(depending on TaskScheduler.Current is the correct default behavior)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:45
@annymsMthd just double-checked to make sure that the cluster is now using the dispatcher that you configured. Looks good
Joshua Benjamin
@annymsMthd
Apr 16 2015 03:45
@Aaronontheweb awesome. I'm still seeing a few issues but it is looking alot better.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:45
we still need to get the scheduler running on the dispatcher
that's the last part
once #860 gets pulled in I'll start working on that
Joshua Benjamin
@annymsMthd
Apr 16 2015 03:46
Yup. I'm sure that will clear up more
I think i have cornered the ConsistentHashingRouterMustAdjustNodeRingWhenRouteeDies race. Updates coming soon
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:47
yay!
I'm looking at your RoutedActorCell bug
Joshua Benjamin
@annymsMthd
Apr 16 2015 03:47
\o/
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:47
TL;DR; it looks like we're definitely doing something silly there
going to try to sort that one out tonight
in a new PR
because I have a failing multi-node test that reproduces this behavior and it has been driving me insane
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:55
oh dear god
yes, thank you @annymsMthd
Joshua Benjamin
@annymsMthd
Apr 16 2015 03:55
that was it?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:55
this explains my multi-node test failures perfectly
Joshua Benjamin
@annymsMthd
Apr 16 2015 03:56
epic
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:56
and why pool routers work so well
some of this code is very old
so it was likely written at a time when we were still learning Akka's internals
Joshua Benjamin
@annymsMthd
Apr 16 2015 03:56
yeah. It looked like it just wasn't accounting for the types
Chris Martin
@trbngr
Apr 16 2015 03:57
Boo!
Writing my Eventstore tests: "There is no active ActorContext, this is most likely due to use of async operations from within this actor."
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:58
var self = Self;
//async thing
// use self instead of Self
need a closure like that @trbngr
although if your code isn't doing anything async itself
then it means there's a bug in the testkit
Chris Martin
@trbngr
Apr 16 2015 03:58
oh it is
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:58
where we're not doing that
the ActorContext is bound to the current ExecutionContext of the actor - so in cases where you might leave that context (anything using the TPL) you'll want to close over it
Chris Martin
@trbngr
Apr 16 2015 03:59
Hmmm. not calling self anywhere
Aaron Stannard
@Aaronontheweb
Apr 16 2015 03:59
err, not bound to the ExecutionContext exactly
@rogeralsing can explain it :p
anyway, could you post your code RQ? just the offending part
Chris Martin
@trbngr
Apr 16 2015 04:00
I think I may have it. hold
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:00
I could take a look at the testkit and see if we're doing something like that inside there, unbeknownst to you
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:04
ah, I should have fixed this in the version of Akka.Persistence we released with v1.0
can you make sure you're using the latest? We released a new pre-release version
Chris Martin
@trbngr
Apr 16 2015 04:07
will do
using 1.0.0-pre1504092226. Nuget shows no updates
Is there a myget repo?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:09
no myget,but you can download the latest artifacts off of our build server
blah, looks like the racy unit tests have nuked all of our /dev builds today
Chris Martin
@trbngr
Apr 16 2015 04:10
link me up ;)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:10
(we're working on fixing that.)
in the meantime, you can try a PR build
Chris Martin
@trbngr
Apr 16 2015 04:10
ahh. np. I gotta get off the comp for the day. Going on 14 hours today ;)
not sure if that link has guest access turned on or not
there we go
try that one
Chris Martin
@trbngr
Apr 16 2015 04:12
oh wtf....what's another 20 mins? :)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:12
that's the spriit
spirit*
Chris Martin
@trbngr
Apr 16 2015 04:16
blob
no dice
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:16
damn
Chris Martin
@trbngr
Apr 16 2015 04:17
It's cool
It works outside of TestKit though.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:18
probably an issue in the TestKit then
Chris Martin
@trbngr
Apr 16 2015 04:22
I'll be back tomorrow. Thanks for all your help.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:22
@trbngr you are welcome!
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 04:38
nice @trbngr ! I'm slowly making my own akka event sourcing sample, but it takes a lot of time which apparently I don't have :P
do you going to distribute Akka.Persistence.EventStore as NuGet package?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 04:52
@rogeralsing my attempts to determine if I've fixed the cluster group routing are being foiled by two different pieces of software - XUnit crashing on the one hand, Visual Studio's child process debugger addon locking up VS on the other
software is evil
Roger Johansson
@rogeralsing
Apr 16 2015 05:33
We need a resillient concurrency lib for this.... Oh wait..
David Smith
@smalldave
Apr 16 2015 05:47
@aaronontheweb I find debugging multi-node tests mostly useless. I just use logging. I'm back to using nlog as everything coming over stdout seems to be flushed in large batches so order is totally wrong.
Aa
David Smith
@smalldave
Apr 16 2015 05:54
I'm still looking at issue in remoting where a node that comes back up can't asssociate. I've been right down the remoting stack and through Helios and back up. The associate message goes across the wire. Looks like the Receive callback isn't wired up right. Any idea why that might be?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 05:56
the Receive callback inside Helios?
or somewhere else?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 06:22
@smalldave actually, I might have an idea.... this is on the inbound side of the connection with Helios?
can you record for me whom terminated whom originally?
I'm wondering if the inbound side of the pipe doesn't recover correctly in the event that it gets terminated by the client
or vice-versa
because the underlying Helios transport doesn't get restarted - it's in accept mode. Responsible for multiple connections.
but maybe something gets dirtied inside the remoting plumbing under some circumstances
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 06:44
Am I missing something or is ClusterSharding a single source file?
Roland Kuhn
@rkuhn
Apr 16 2015 06:45
It is indeed; we are going to clean that up a little and move it into the new akka-cluster-tools before releasing Akka 2.4
Arjen Smits
@Danthar
Apr 16 2015 07:14
@rogeralsing That nested Ask stuff? I just figured out a way to remodel some stuff so I don't need it anymore (with better performance to boot).
Which I find pretty funny considering all the effort we put into it :D
David Smith
@smalldave
Apr 16 2015 07:32
@Aaronontheweb Yep I'm pretty sure it's in that area. When a new connection is accepted the receive handler is set from some state that is still around. Need to work out how that is changing when the node is shutdown and brought back up.
Roger Johansson
@rogeralsing
Apr 16 2015 07:56
@Danthar well the bugfix was still needed, so it was good to take the feature for a test drive :)
Arjen Smits
@Danthar
Apr 16 2015 07:59
hehe true.
@trbngr I really like your CQRS with Akka example. Reading about modelling according to the ActorSystem paradigm is one thing. Actually seeing a non-trivial example of it, is quite another.
Arjen Smits
@Danthar
Apr 16 2015 08:05
For me, seeing an architecture that I know (ES and Cqrs) translated to the Actor Model. Helps in the mental shift.
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 08:07
@Danthar there are more examples on JVM/Scala akka side - they can be mapped quite well to .NET too (generally speaking when you lack of docs/resources on .NET akka, try to look for responses in JVM)
David Smith
@smalldave
Apr 16 2015 08:09
talking of JVM .NET documentation. just look at documenting multi-node tests. the JVM version of the documentation covers a lot of how they work. do I reference it? copy it and amend to be more relevant to the .NET version?
Roger Johansson
@rogeralsing
Apr 16 2015 08:13
copy it and add a file for it in the getakka.net docs folder, or add to an existing page
Raymen Scholten
@raymens
Apr 16 2015 08:14
Is there any of the logging frameworks that you recommend for Akka.net? Or just any of the one's listed?
Arjen Smits
@Danthar
Apr 16 2015 08:15
@Horusiath :nods: I haven't looked through all the samples in the akka.net repo yet. Just didn't had the time. Saw the CQRS example coming by in the chat, and since I already know all that stuff (CQRS), I dove in.
But I really need to make some more time to look at all the examples. When I ran into akka.net I just started into a new project, So the pressure was on to build a working prototype. Which is also a valid way of learning, its just not very structured ;)
@raymens i can recommend Serilog
Raymen Scholten
@raymens
Apr 16 2015 08:17
@Danthar Thanks, can you support it with an argument or experience?
Arjen Smits
@Danthar
Apr 16 2015 08:18
ofcourse. Serilog configuration is code centric. Making it much easier to setup and start with. There are already loads of 'logging sinks' as they call it, which allow you to log to virtually anything you can think of. And its easy to build your own logging sink.
Also: Serilog is a structured logging library. Your logs aren't just plain old text. This allows you to do interesting things with it.
Seq is a good example of that: http://getseq.net/
Example:
Serilog.Log.Logger = new LoggerConfiguration()
         .WriteTo.ColoredConsole()
         .MinimumLevel.Information()
        .WriteTo.RollingFile(Path.Combine(domainDir, "Log-{Date}.txt"), restrictedToMinimumLevel: LogEventLevel.Debug)
Raymen Scholten
@raymens
Apr 16 2015 08:21
That's exactly what I was looking for :+1:
Arjen Smits
@Danthar
Apr 16 2015 08:23
I love how it can do everything Log4Net can do. But does not force you to have these overtly verbose configuration crap in your app.config. (although they are working on text based config support)
Raymen Scholten
@raymens
Apr 16 2015 08:24
That's great because I'm not a great fan of app.config stuff
Arjen Smits
@Danthar
Apr 16 2015 08:28
Im a fan of code based config as well. Most of that stuff never changes anyway. And you can parametrize stuff that does change.
David Smith
@smalldave
Apr 16 2015 08:51
@rogeralsing thanks. will do
while I remember. xunit is the only test framework that made test discovery and execution (important for the runners) easy. it would be quite a bit of work do so in another framework. we'd need to keep xunit for the multi-node stuff for now.
doesn't stop the other tests from changing framework.
Raymen Scholten
@raymens
Apr 16 2015 08:57
Why does the Cancelable require a scheduler when creating one? Does it cancell all scheduled messages without adding the the ICancellable to the scheduler call or?
Raymen Scholten
@raymens
Apr 16 2015 10:12
After installing the Serilog package and configuring it I receive the following ConfigurationException: Cannot find Serilog.... https://gist.github.com/raymens/54defd27abd1b26cbbb8 . Can someone help me out with what I'm doing wrong? (It's copied over from the docs)
Roger Johansson
@rogeralsing
Apr 16 2015 10:13
yes, single quote is not a valid string identifier in HOCON (nor JSON), you should enclose your type in double quotes
"akka { logLevel=INFO, loggers=[\"Akka.Logger.Serilog.SerilogLogger, Akka.Logger.Serilog\"]}"
Raymen Scholten
@raymens
Apr 16 2015 10:14
Doh, that simple :) Thanks
it uses single quotes at http://getakka.net/docs/Serilog
Roger Johansson
@rogeralsing
Apr 16 2015 10:14
I've actually talked to typesafe about this and asked them to change the hocon spec, but they dont want to, and we will follow their spec
ouch, ill fix that
Raymen Scholten
@raymens
Apr 16 2015 10:19
If F# you can use triple quotes like this:
let akkaConfig = """akka { logLevel=INFO, loggers=["Akka.Logger.Serilog.SerilogLogger, Akka.Logger.Serilog"]}"""
So the requirement of double quotes isn't that bad
Roger Johansson
@rogeralsing
Apr 16 2015 10:20
the docs are updated now
Raymen Scholten
@raymens
Apr 16 2015 10:20
okay
Arjen Smits
@Danthar
Apr 16 2015 11:47
heh, ran into exactly the same problem initially.
damn quotes :P
Alexander Prooks
@aprooks
Apr 16 2015 14:16
hi all, any ideas why build is failing with [13:35:12][Step 1/1] Unable to find version '3.4.1' of package 'FAKE'.
Raymen Scholten
@raymens
Apr 16 2015 14:16
@aprooks probably a Nuget bug
Fake just released a new version and the nuget servers aren't completely in sync yet, a common issue
Either force the version of Fake in the installation file or wait around 15 minutes
Alexander Prooks
@aprooks
Apr 16 2015 14:19
ok I'll wait. PR would need a review anyway.
Arjen Smits
@Danthar
Apr 16 2015 14:26
Could it be that the getakka site is behind, compared to the repo? Im seeing doc changes which have been merged days ago, still not appearing on the site.
Raymen Scholten
@raymens
Apr 16 2015 14:27
The change @rogeralsing made to the docs today about the Serilog stuff is on the site right now
Roger Johansson
@rogeralsing
Apr 16 2015 14:28
@Danthar where were those changes made?
docs have moved from the main repo to the getakka.net repo, and from the wiki folder to the docs folder.. the /wiki/ pages are however still there
Arjen Smits
@Danthar
Apr 16 2015 14:30
well im still not seeing the windows deployment docs online.
noticed it because I wanted to copy paste something
??
now its there, did you update something? Or was this somekind of wierd cache thing
Roger Johansson
@rogeralsing
Apr 16 2015 14:33
http caching i guess
Aleksandrs
@sonicflare
Apr 16 2015 17:13
question: are there any plans to do something with TypedActors? Or should I write wrapping and codegen?
Roger Johansson
@rogeralsing
Apr 16 2015 17:17
Depends on what you mean with Typed actors, the "TypedActor" class we have in Akka.NET, The now obsoleted TypedActor i JVM, or the new "Typed" module in JVM
Aleksandrs
@sonicflare
Apr 16 2015 17:21
the part, where you can specify interface/method and get some codegen to wrap that into an Receive object.
now there is only IHandle<T> and TypedActor doing Method reflection call on receive type
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 17:23
@sonicflare This has been obsoleted, since 1. all reflection is crippling performance, 2. it's heavily limiting actors capabilities
Aleksandrs
@sonicflare
Apr 16 2015 17:25
hm ok. So I would assume, that making T4 template that parse some folder with interfaces and creating just ActorBase with receive with wrapping method arguments into its own type would do the same thing?
or are there any better ideas, on how to support the interface based actors in the future?
Joshua Benjamin
@annymsMthd
Apr 16 2015 17:28
I would just follow the patterns. They aren't really that much work when you get used to them.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:28
@aprooks yeah one of the janky things we can't always depend on is the freshness of NuGet's CDN
sometime that can cause an inadvertent build failure during the first step
so I haven't had time to write up a proposal for this yet
but after reading the High Performance Programming in .NET book I think we need to start being a bit more explicit about how we measure performance over the lifetime of the codebase in Akka.NET
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:33
i.e. making performance benchmarking part of the automated build process for all PRs or nightly builds
Joshua Benjamin
@annymsMthd
Apr 16 2015 17:33
nice
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:33
with focus on some specific, easily measurable metrics
here's a good example: all ReceiveActors with no user-defined state with no children should use less than 900b of memory
when I say "easily" measurable, I'm not referring to how easy it is to collect that data :p - I mean how easy it is to show comparative improvements in that data over time
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 17:34
@sonicflare why do you want to use interfaces at first place?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:35
next metric idea - message throughput
Aleksandrs
@sonicflare
Apr 16 2015 17:36
@Horusiath yeah, i think it will help with initial bootstrap, as people are used to deal with WCF and help with api discoverability.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:36
two receive actors should be able to send 1,000,000 messages per second to each other on a 2-core machine and experience less than X amount of context switching / CPU utilization / whatever metric is best here
haven't thought through all of them yet
but imagine how much more powerful our releases are going to be if we can say "yeah, we reduced our memory footprint by 20% since the last release - here's the data"
or "we reduced gen 1 garbage collection pressure by X% - here's the data"
Joshua Benjamin
@annymsMthd
Apr 16 2015 17:37
collect the data from a run with statsd and influx then query it at the end
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:37
so that's an idea I want to start trying to sell for both Helios and Akka.NET - make "performance" a cross-cutting concern just like security
and take active steps to measure and record historical changes in it
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 17:41
@sonicflare I wouldn't expect many steps towards interface-based actors. Typesafe is coming to exactly opposite direction -> from OO to more FP, while C# itself is going to be more and more functional language in incoming releases. Interfaces haven't got much gain there.
Roger Johansson
@rogeralsing
Apr 16 2015 17:41
@Aaronontheweb if I set up Lighthouse to listen to my local ip, e.g. 192.168.1.88... should the start up really say "listening to 127.0.0.1" ??
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:42
is the public-hostname 192.168.1.88 ?
and is the hostname 127.0.0.1 ?
Roger Johansson
@rogeralsing
Apr 16 2015 17:43
no, Im using your repo from scratch, just changed hostname to the local ip.. but the boot says 127.0.0.1 I shouldnt need to do public host within a known network?
Roger Johansson
@rogeralsing
Apr 16 2015 17:44
ah oki
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:44
looks like the final fallback is wrong
should be just the hostname from config
rather than a hard-coded "127.0.0.1"
would you agree?
Roger Johansson
@rogeralsing
Apr 16 2015 17:50
yes
its up and running now
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:50
nice
I'll log a bug for that
Roger Johansson
@rogeralsing
Apr 16 2015 17:50
trying to get the raspberry pi to join a cluster, but it fails to join for some reason
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:51
get any error messages?
or just times out?
Roger Johansson
@rogeralsing
Apr 16 2015 17:51
[WARNING][4/16/2015 5:51:00 PM][Thread 0004][[akka://webcrawler/system/endpointManager/reliableEndpointWriter-akka.tcp%3a%2f%2fwebcrawler%40192.168.1.88%3a4053-1]] Association with remote system akka.tcp://webcrawler@192.168.1.88:4053 has failed; address is now gated for 5000 ms. Reason is: [Association failed with akka.tcp://webcrawler@192.168.1.88:4053]
[ERROR][4/16/2015 5:51:00 PM][Thread 0004][akka://webcrawler/system/endpointManager/reliableEndpointWriter-akka.tcp%3a%2f%2fwebcrawler%40192.168.1.88%3a4053-1/endpointWriter] Association failed with akka.tcp://webcrawler@192.168.1.88:4053
Cause: Akka.Remote.EndpointAssociationException: Association failed with akka.tcp://webcrawler@192.168.1.88:4053
at Akka.Remote.EndpointWriter.PublishAndThrow (System.Exception reason, LogLevel level) [0x00000] in <filename unknown>:0
at Akka.Remote.EndpointWriter.Initializing (System.Object message) [0x00000] in <filename unknown>:0
at Akka.Actor.ActorCell+<>cDisplayClass3f.<Akka.Actor.IUntypedActorContext.Become>b3e (System.Object m) [0x00000] in <filename unknown>:0
at Akka.Actor.ActorBase.AroundReceive (Akka.Actor.Receive receive, System.Object message) [0x00000] in <filename unknown>:0
at Akka.Actor.ActorCell.ReceiveMessage (System.Object message) [0x00000] in <filename unknown>:0
at Akka.Actor.ActorCell.Invoke (Envelope envelope) [0x00000] in <filename unknown>:0
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:52
and we've been able to establish Akka.Remote connections directly to the RPI machine before right?
Roger Johansson
@rogeralsing
Apr 16 2015 17:52
yepp
the chat example worked fine, in both directions
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:52
might relate to the issue @smalldave is describing
Natan Vivo
@nvivo
Apr 16 2015 17:53
@Horusiath, @sonicflare I actually was thinking about the same concept, from what I have seen on Orleans. I was almost implementing some form of typed actors (in the sense @sonicflare said) by using a mock framework just to see what would come up.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:53
one area where we have some issues with Akka.Cluster is when you have multiple processes booting up simultaneously
and they both try to form connections with eachother concurrently
and both operations fail - the system usually recovers and gets it right on the second try
Roger Johansson
@rogeralsing
Apr 16 2015 17:54
this happens even if I start the RPI process way after the leader is up
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:54
but Dave's research makes it sound like there's a scenario where the inbound side of the pipe gets dirty
and can't pipe received messages to its actors
the receive handler from Helios gets re-used or something
so I'm not totally sure, but that issue is probably closer to an Akka.Remote issue than clustering
clustering doesn't touch the network directly - it's basically just a state management service
Aleksandrs
@sonicflare
Apr 16 2015 17:55
@Horusiath, @nvivo the orleans have a good approach. It's better to give them a good interface and codegen stuff, but not the way orleans does it, something like t4 template or something that is included in the project at least and you can see and explore it. It does not need to be in akka, but mb in some akka.contrib.
Natan Vivo
@nvivo
Apr 16 2015 17:58
@sonicflare yep. I agree. I think the point is not much 'should be interfaces" but more that "it would be nice if the compiler could warn me if I try to ask/tell something an actor shouldn't handle". maybe its interfaces, but with roslyn one other way is compiler analyzers
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:59
@rogeralsing I'm going to be without my Mono setup for the next couple of weeks, so I won't be as helpful in that regard as I would like :\
Roger Johansson
@rogeralsing
Apr 16 2015 17:59
@nvivo @sonicflare that support to prevent messages that cant be handled is solved in JVM Akka Typed module, by defining behaviors that consume certain types of messages, (right @Horusiath ?)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 17:59
@annymsMthd would you mind rebasing your latest PR btw? Looks like we have a minor merge conflict on dev
Joshua Benjamin
@annymsMthd
Apr 16 2015 18:00
rgr that
Aleksandrs
@sonicflare
Apr 16 2015 18:01
@rogeralsing but that would be a runtime error. I'm looking at compile time error.
Natan Vivo
@nvivo
Apr 16 2015 18:01
@rogeralsing I only scratched akka typed docs (too much to read already), will take a better look
that's what I imagine. in the C# world at least, how would you enforce anything without an interface or a class to check for the message types?
Aleksandrs
@sonicflare
Apr 16 2015 18:04
If you change interface for example, and contract is part of some shared .dll, then the error will be caught on some CI build (during compilation), while the object approach will be caught at most in intergration tests
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 18:06
@nvivo @sonicflare @rogeralsing JVM akka-typed module is designed to cover this goal
but still, it's even more FP idea, no interface based actors attached
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:08
@annymsMthd you're going to want to squash those commits - let me or @jcwrequests know if you need any help wih the steps for that
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 18:08
I think, we should explain some design decisions made in akka in some separate article - esspecially to cover interfaces vs protocols part
Joshua Benjamin
@annymsMthd
Apr 16 2015 18:11
@Aaronontheweb i think i might have messed up the rebasing thing, new to it. Check it out and see if i did. I'll squash the commits after you check it out
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:11
@annymsMthd give this a read real quick https://gist.github.com/Aaronontheweb/f777f9f5a2c679559490
that's my personal process for doing this
Joshua Benjamin
@annymsMthd
Apr 16 2015 18:11
rgr that thanks!
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:12
@jcwrequests is making a video of this process
which should help
git workflows are a little counter-intuitive at first
so that's why we're investing some time in helping reduce the learning curve
Joshua Benjamin
@annymsMthd
Apr 16 2015 18:14
That gist sums it up perfectly. I think i get the flow now
Natan Vivo
@nvivo
Apr 16 2015 18:16
I honestly think you guys have too much trouble with github app and command line tools.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:17
@nvivo do you have a suggestion?
Joshua Benjamin
@annymsMthd
Apr 16 2015 18:17
I'm going to nuke our fork and correct those issues
Natan Vivo
@nvivo
Apr 16 2015 18:17
I use TortoiseGit
Joshua Benjamin
@annymsMthd
Apr 16 2015 18:18
same
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 18:18
command line FTW! :P
Natan Vivo
@nvivo
Apr 16 2015 18:18
=)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:18
I use the command line just because that's where I learned this stuff
if you have tools that can do this better, use em
Natan Vivo
@nvivo
Apr 16 2015 18:18
I use command line sometimes, but I like the shell integration of tortoise. what I don't like is the github app
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:18
the github app is useful for staging commits and that's pretty much it
Natan Vivo
@nvivo
Apr 16 2015 18:19
anyone tried sourcetree?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:19
and being able to quick-launch shells and windows explorer windows when I'm starting up work
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:19
@nvivo I think @jcwrequests uses it and likes it
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 18:19
yes, I've tried, it's pretty good
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:19
can't recall though
Roger Johansson
@rogeralsing
Apr 16 2015 18:20
I'm finally starting to learn git after 1.5 years of constant usage D
:D
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:21
there's even more advanced stuff in there like git bisect
Natan Vivo
@nvivo
Apr 16 2015 18:21
@Horusiath about Typed, from that I understand (looking from C# here) the way this would work is to add the sender as a property in the message, and expose some form of "IActorRef<TMessage>" that implements "Tell(TMessage)"
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:21
that I've never used
Natan Vivo
@nvivo
Apr 16 2015 18:21
is this correct?
Roger Johansson
@rogeralsing
Apr 16 2015 18:23
@Aaronontheweb does cluster use those vb thngs or perf counters just to be able to run? could that be the RPI problem or is that separate?
Natan Vivo
@nvivo
Apr 16 2015 18:24
honestly I'm still amazed that nowadays a tool written for linux by the creator of linux is used to host official microsoft source code =)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:24
@rogeralsing could be - you can disable metrics gossip via configuration and that code won't run
I'm going to extract that stuff to the Akka.Cluster.Metrics library
(just like in the JVM version)
because really those tools are only for WeightedRouters
which aren't implemented yet
Roger Johansson
@rogeralsing
Apr 16 2015 18:25
what config path should i look for?
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 18:31
@nvivo it's only one point of the whole concept. The line of reasoning is that - right now, we attach the sender of the message each time. This forces us to wrap each message with Envelope object, so that additional sender field could be attached, no matter if you use it or not. Explicit sender field in message is a good for two reasons:
  1. We explicitly describe an intent, that we want to get a response for sent message
  2. If this concept succeeds, we could drop envelopes completely and serialize messages directly -> again performance boost
(also this is the way, Erlang already solves the problem of message replies)
Natan Vivo
@nvivo
Apr 16 2015 18:31
makes sense
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 18:34
The other idea, which I think, should answer for your concern about compile time messages checking is that akka-types has notion of typed inputs for receive methods as well as typed IActorRef objects - so you could i.e. have a set of messages with some specific marker interface and return actor ref allowing to tell only messages of that interface type through that specific ref
akka.cluster.metrics.enabled = off
that should do it
Natan Vivo
@nvivo
Apr 16 2015 18:39
@Horusiath from what I'm reading on Akka docs, it seem Akka Typed solves only some part of typed checks, but has limits.
I agree that the explicit sender is a nice idea, but I think specifically for type checking other solutions would be needed
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 18:42
everything depends on context
Roger Johansson
@rogeralsing
Apr 16 2015 18:42
@Aaronontheweb ok, that wasnt it then, its the association that seems to fail, it boots nicely and start listening on its own addess : https://gist.github.com/rogeralsing/c1bebf64681ad37ff4da
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:43
@rogeralsing can you confirm that RPI can reach lighthouse? firewall stuff?
and do the logs on lighthouse's side show any inbound activity?
the issue looks as simple as not being able to actually connect to lighthouse
or lighthouse being in a state where it can't accept the connection, which would be one of the gating / quarantining bugs @smalldave and I have been discussing
Roger Johansson
@rogeralsing
Apr 16 2015 18:45
nope no inbound activity...
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:45
k, in that case we need to rule out the firewall as an issue
on both ends
Roger Johansson
@rogeralsing
Apr 16 2015 18:45
just tried chat server/client again, works as expected
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:45
are the port #s the same?
Roger Johansson
@rogeralsing
Apr 16 2015 18:46
the ports are correct
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:46
what happens if you try to connect to lighthouse from your local machine
not RPI
Roger Johansson
@rogeralsing
Apr 16 2015 18:47
that works fine
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:47
ok
so it's not an issue with lighthouse
Natan Vivo
@nvivo
Apr 16 2015 18:47
@Horusiath it seems that with akka typed the caller should know what to expect in return. I ask something saying "here is message A, reply with B". That adds some safety, but it won't tell me if message A is a possible message in the first place. Am I missing something?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:47
it's got to be at the network layer - using the same port #s (including the outbound port on RPI) try telnetting or something
some firewalls are configured to disallow all outbound activity by default unless explicitly authorized
it's not common
but does happen
the other than you can do is wireshark on the receiver
Roger Johansson
@rogeralsing
Apr 16 2015 18:49
tried now, same ports as chat example, still no luck
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:49
ever used it before?
Joshua Benjamin
@annymsMthd
Apr 16 2015 18:49
can the RPI ping the host?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:51
yeah the way this problem is going to get debugged is very different depending on whether or not Akka.Cluster packets are actually arriving on the lighthouse machine
the other thing you can check is whether or not the TCP connection was successfully opened on RPI
Helios should throw an exception right away if it can't
and that'll show up in the logs
nested inside the EndpointDisassociationException
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 18:53
@nvivo Why? you create an interface i.e: IUserCommand and implement it in some messages (eg. RegisterUser, SignIn, SignOut). Then you're creating an actor behavior for type IUserCommand and spawn an actor, receiving IActorRef<IUserCommand> in return (which will allow to Tell only messages of type IUserCommand)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 18:53
although that can be tough to tell too.... I don't have any logging inside Helios that would show up inside Akka.NET
better off with wireshark
it's just Fiddler for sockets
Roger Johansson
@rogeralsing
Apr 16 2015 18:56
ok, will give it a try
@Aaronontheweb I can see the RPI IP show up in the wireshark log
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:01
cool so the connection works then
not a firewall issue
see any packets go over the wire?
(might still be a fun serialization issue with the cluster-specific serializers)
Natan Vivo
@nvivo
Apr 16 2015 19:03

@Horusiath ok, that makes sense now... and in this case, IUserCommand could be something like

interface IUserCommand {
     IActorRef<IUserEvent> Sender { get; };
}

so the actor can only reply that message. correct?

Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:03
@Aaronontheweb you've pushed unfinished PR #859
Roger Johansson
@rogeralsing
Apr 16 2015 19:03
hehe oooor, it could be me seeing the putty clients communication :clap: :sparkles: doh
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:04
nooooooooooooooooooo.png
Roger Johansson
@rogeralsing
Apr 16 2015 19:04
Ill do it w/o remote control, plug the pi to the tv and start it there brb :)
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:08
fuck, Akka.Types sounds so exciting, that I want to implement it right now
Natan Vivo
@nvivo
Apr 16 2015 19:09
haha
do you guys have a roadmap of things that are to be ported from akka yet?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:14
I'm going to propose one soon - we've been following it on an as-needed basis
we've been in communication with @rkuhn (Akka lead architect) and we have a better picture of their own roadmap now
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:15
I think each one of us has some proposal
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:15
yeah
I agree with that
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:15
we could talk about it on next meeting
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:15
yep
it's easier to have that conversation with something that can be torn down or edited
versus blank sheets of paper
(IMHO)
Natan Vivo
@nvivo
Apr 16 2015 19:16
out of curiosity.... how many of you are there actively developing akka.net?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:16
7 core contributors thus far
Natan Vivo
@nvivo
Apr 16 2015 19:16
and is everybody part of petabridge?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:16
just me and @skotzko
everyone else is a volunteer
Natan Vivo
@nvivo
Apr 16 2015 19:17
hmm ok
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:17
I wish we could work on it as a regular work
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:17
we have like 3x the number of core contributors who work on contrib modules or bug fixes
Natan Vivo
@nvivo
Apr 16 2015 19:18
I honestly wanted to contribute with something, but everytime I look at the "up for grabs" issues, everything I could touch is already taken
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:18
but only 7 who have been working on porting core JVM infrastructure
Natan Vivo
@nvivo
Apr 16 2015 19:18
you guys are too fast.. you open an issue open for grabs and grab it at the same time
right.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:18
well, that depends on where you look
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:18
there are still a plenty of work to do
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:18
all of the high availability stuff
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:19
;)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:19
Persistence, Clustering, Remoting
has TONs of stuff that need work
Roland Kuhn
@rkuhn
Apr 16 2015 19:19
@nvivo Akka.Net is still in the extremely fast and fluent phase where contributing is tough—for the reasons you discovered—but it is all the more exciting :-)
Natan Vivo
@nvivo
Apr 16 2015 19:19
yep. I think I got a little scared trying to say something. =)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:20
@nvivo so what if we tried this
if the core contributors lay out a road map of what the high-level goals are
release by release
i.e. I think for Akka.NET v1.1 shipping Akka.Cluster is the "big goal"
v1.2 might be Akka.Streams or Akka.Persistnce
and so forth (this is pure theoretical)
and spelled out areas where we need help
i.e. I really am going to need help on Helios implementing all of the TLS stuff there
and gave volunteers an option to commit to working on one of those areas in concert with someone who already knows that part of the codebase
Natan Vivo
@nvivo
Apr 16 2015 19:22
that sounds a good plan. will be a lot of work from you to come up with that... sounds like management
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:22
would that make it easier for you to find a way to contribute?
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:22
@Aaronontheweb agree, these 3 are most important. For me also Akka.Cluster.Sharding and Akka.IO are something, that could get some potential attention (they are not so big as the rest of plugins you've mentioned)
Natan Vivo
@nvivo
Apr 16 2015 19:22
I think so. one thing is that I'm not sure what exactly is expected
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:23
me neither @nvivo - just an idea at the moment
Joshua Benjamin
@annymsMthd
Apr 16 2015 19:23
I wonder if there is something like github integration for Trello or a kanban board for open source projects
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:23
doesn't have any more substance to it than that
Natan Vivo
@nvivo
Apr 16 2015 19:23
no, I mean on porting stuff
for example
when I look at stuff at the akka website I think "how that should work on C#"
but it seems that is not always the idea, and there are more constraints than what I imagined with typesafe
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:24
I wouldn't think of them as "constraints"
Natan Vivo
@nvivo
Apr 16 2015 19:24
so what you said of saying what is needed and pairing with someone that knows what could be changed and what could not would help a lot
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:24
more like "here's stuff the Typesafe guys learned the hard way from lots of actual production users under massive workloads"
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:24
@nvivo when I look at the akka stuff, my first thoughts are "how is this supposed to work on F#, so that C# guys still can be happy" ;)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:25
so when something looks weird to me in their code
I frame it through the lens of "there's probably a good reason for this"
Natan Vivo
@nvivo
Apr 16 2015 19:25
I see
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:25
rather than "man, I wish I could do it X way"
just a different way of viewing the problem
and learning what those reasons are is actually super fun
for instance - the code in Akka.Cluster is pretty simple
but the tests are insane
Natan Vivo
@nvivo
Apr 16 2015 19:26
what I see sometimes is that just because they did it in some way, it doesn't mean there aren't better ways. many things are constraints of the platform
David Smith
@smalldave
Apr 16 2015 19:26
amen
Natan Vivo
@nvivo
Apr 16 2015 19:26
but porting those things differently would also cause problems.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:26
that's because there's all sorts of subtle problems with slow networks, random machine failures, consensus algorithms
that Typesafe had to discover the hard way
@smalldave I feel you there :p
Natan Vivo
@nvivo
Apr 16 2015 19:27
I saw your tests, wrapping my head around that to understand a lot of stuff
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:27
@nvivo yep, there's lots of cases where things are more complicated because of runtime differences
the more practice you get with the JVM code
the easier it becomes to recognize those
and that's where we have to do some original inventing
Natan Vivo
@nvivo
Apr 16 2015 19:28
one thing I was going to do before was docs
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:28
@nvivo we still need LOTS of help there
Bartosz Sypytkowski
@Horusiath
Apr 16 2015 19:28
try to do some socket code porting from JVM to .NET on Akka.IO ;)
Natan Vivo
@nvivo
Apr 16 2015 19:28
but skotzko told me you were working on a new site and asked me to wait so he could coordinate
that was about 3 months ago.. =)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:28
and akkadotnet/getakka.net#7
that's the list of areas where we still need help
@skotzko reorganized everything and added some build instructions - took some time to make it easier to organize / add new docs
and it's still a work in progress - I personally have a lot more docs I need to write
Natan Vivo
@nvivo
Apr 16 2015 19:30
I could start writing some of those
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:30
that would be REALLY helpful
Natan Vivo
@nvivo
Apr 16 2015 19:30
I felt the pain of learning akka
there are some things that are not written anywhere, even in the official akka website
more like concepts
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:31
if you could help contribute there you'd be helping a lot of people
mostly the users
Natan Vivo
@nvivo
Apr 16 2015 19:32
so... how do you coordinate that? should I just choose some of topics and notify you as a comment?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:32
yeah
there's not a lot of contributors rushing to submit docs :p
so you can assume that anything that isn't currently crossed off on that list is up for grabs
Natan Vivo
@nvivo
Apr 16 2015 19:33
the sources for docs now are on github.com/akkadotnet.github.com right?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:33
yessir
decoupled them from the core library
less noise on the main repo
that way
Natan Vivo
@nvivo
Apr 16 2015 19:34
right. was finding it strange all the htmls =)
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:35
every time a PR gets accepted there drone.io builds and updates https://github.com/akkadotnet/akkadotnet.github.com
so think of https://github.com/akkadotnet/akkadotnet.github.com as basically codegen output
Natan Vivo
@nvivo
Apr 16 2015 19:35
Right. And the idea here is to always grab the docs from the official akka snapshot and migrate on that?
or do you start from scratch?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:36
up to you
our proposed structure is different
there's SOME overlap
but I expanded the docs because there's a lot of stuff we get asked about that isn't coveredthere
my goal - use language that is easy to understand to describe what the code and concepts do
English is not the first language for many of our users
Natan Vivo
@nvivo
Apr 16 2015 19:40
Ok. I'll take a look at the list and see what I can do there and comment on the issue
David Smith
@smalldave
Apr 16 2015 19:42
@Aaronontheweb latest research. OnConnect for TcpServerHandler does not fire for system that comes back up on same port as previous system.
The underlying reactor accepts new connection but the connect callback comes from NetworkEventLoop and second time round isn't hooked up to OnConnet in TcpServerHandler. Finding it difficult to work out what it is calling and what is changing the NetworkEventLoop connect event.
Aaron Stannard
@Aaronontheweb
Apr 16 2015 19:53
@smalldave got it - great find
that would explain it
sounds to me like the collection of connections inside Helios must be hanging onto the old handle
the one we threw away
would that explain it?
James Conway
@jwconway
Apr 16 2015 20:11
@Aaronontheweb is UDP yet an option for remoting?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 20:15
not yet, but it'd be easy to implement
Helios supports it
Roger Johansson
@rogeralsing
Apr 16 2015 20:31
@Aaronontheweb what do I need to do to make a node the leader? just start it w/o seed nodes? (going to try to establish connection in the other direction)
Roger Johansson
@rogeralsing
Apr 16 2015 20:39
@Aaronontheweb it works to start up a cluster if the raspberry pi is the leader :)
David Smith
@smalldave
Apr 16 2015 20:43
You can't make it the leader
David Smith
@smalldave
Apr 16 2015 20:49
aargh phone is playing up. the leader is the first node that is able to be leader listed in the gossip
you could probably engineer that somehow
Roger Johansson
@rogeralsing
Apr 16 2015 20:49
I noticed, I had to add the not to it's own list of seeds, then start it first.. after that, nodes from the outside can join
really odd that I can start a node that others can connect to, but I cant connect to other nodes from the RPI
while it works fine in the chat example
David Smith
@smalldave
Apr 16 2015 20:52
when you say connect what do you mean? does it appear available in the cluster?
@Aaronontheweb think that's possible. will have to look at it in the morning. think I am finally close to solving it (although I've thought that before)
Roger Johansson
@rogeralsing
Apr 16 2015 20:56
Something iffy is going on, if I boot two nodes on the RPI and try to get them to join one of them, the one that joins itself works fine, the other one gets the same association error again,
David Smith
@smalldave
Apr 16 2015 21:03
just looking at the association error you are getting. that is exactly what I am seeing in the test I'm trying to fix. i imagine there are a lot of reasons that two nodes could fail to associate though. it's a remoting exception. does this stuff work fine if you aren't using a RPI?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 23:31
sigh
if XUnit 2.0 doesn't improve upon these test runner crashes
I'm going to propose that we move off of it
and onto NUnit
Joshua Benjamin
@annymsMthd
Apr 16 2015 23:32
[Akka.Cluster.Tests.EWMASpec.DataStream_must_calculate_alpha_from_halflife_and_collect_interval] Process is terminated due to StackOverflowException. ?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 23:32
yep
and others
the MultiNodeTestRunner explodes on my machine if I don't have the debugger attached half the time
btw @annymsMthd your changes look good - going to run that spec on the build server a bunch more times
like 3-4
Joshua Benjamin
@annymsMthd
Apr 16 2015 23:33
Is that what that build is running when it fails?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 23:34
not sure TBH
I've seen it fail on Akka.Tests
Akka.Cluster.Tests
it's pretty indiscriminate about it :p
we should try XUnit 2.0 first though
I know this is some of the stuff they were working on
would like to give them the benefit of the doubt
rather than just be another angry nerd on the internet :p
Joshua Benjamin
@annymsMthd
Apr 16 2015 23:35
let me look into some of this stuff and see if I can't smooth it over
Aaron Stannard
@Aaronontheweb
Apr 16 2015 23:36
it'd be a big PITA to change
off of it and onto NUnit
mostly due to our custom test runner for Multi-Node tests
Joshua Benjamin
@annymsMthd
Apr 16 2015 23:36
yeah. We use both here but switching current tests over would be a pain
What commands does the CI run for the build?
Aaron Stannard
@Aaronontheweb
Apr 16 2015 23:38
./build.cmd all
we don't run the multi-node tests as part of the CI process yet
Joshua Benjamin
@annymsMthd
Apr 16 2015 23:38
nice and simple
Aaron Stannard
@Aaronontheweb
Apr 16 2015 23:39
as we're still smoothing out issues with the test runner and Akka.Remote.TestKit
that'll change soonish though