These are chat archives for akkadotnet/akka.net

14th
Sep 2016
Aaron Stannard
@Aaronontheweb
Sep 14 2016 00:34
alright, Mono build chain is able to run end to end except for some Akka.IO specs
more TCP stuff again
going to see if I can get some more information with the logging settings turned up
if that doesn't help me suss out what the issue is exactly, going to mark it as "won't fix" since all of this shit is about to be rewritten anyway
Aaron Stannard
@Aaronontheweb
Sep 14 2016 01:13
woot
think I was able to hotfix Akka.IO
riawz
@riawz
Sep 14 2016 02:28

does it make any difference in terms of resource sharing / performance in an actor which does self polling

to have a short delay using Context.System.Scheduler.ScheduleTellOnce(10, Self, SelfPoll(), Self), like 10 ms
VS
Self.Tell(SelfPoll()) straight away

Aaron Stannard
@Aaronontheweb
Sep 14 2016 05:19
@riawz the IScheduler allocates a Task-like object basically
the SelfPoll will fire immediately without allocating anything other than the message (and possibly some space inside the mailbox depending on how large the queue is)
really though, I'd use the scheduler if you really need a delay of any kind
otherwise it's safe to just to a self tell right away
@Silv3rcircl3 got the Akka.Streams suite mostly passing on Mono now... had a weird compilation bug on one spec that broke on a rebase
two areas where Reflection.Emit (from inside the expression compiler) power vomits and blows things up
going to see if there's a work-around
riawz
@riawz
Sep 14 2016 05:38
@Aaronontheweb thanks!
Aaron Stannard
@Aaronontheweb
Sep 14 2016 05:51
@Silv3rcircl3 anything special about these specs that failed in Akka.Streams? Trying to find the common root cause given that the failure is the same, but there are other specs inside these test fixtures which pass: http://petabridge-ci.cloudapp.net/viewLog.html?buildId=15933&tab=buildResultsDiv&buildTypeId=AkkaNet_LinuxMonoBuild&guest=1
this is building off of a personal branch of mine at the moment - haven't fundamentally changed streams in any meaningful way
Boban
@bobanco
Sep 14 2016 06:02
This message was deleted
Aaron Stannard
@Aaronontheweb
Sep 14 2016 06:05
what it looks like to me
given that the error messages are all the same
System.InvalidOperationException : 
  at (wrapper managed-to-native) System.Reflection.Emit.DynamicMethod:create_dynamic_method (System.Reflection.Emit.DynamicMethod,System.Reflection.Emit.DynamicMethod)
  at System.Reflection.Emit.DynamicMethod.CreateDynMethod () <0x404d7590 + 0x0019e> in <filename unknown>:0 
  at System.Reflection.Emit.DynamicMethod.CreateDelegate (System.Type delegateType, System.Object target) <0x404d74f0 + 0x0003a> in <filename unknown>:0 
  at System.Linq.Expressions.Compiler.LambdaCompiler.CreateDelegate () <0x404d7370 + 0x0008a> in <filename unknown>:0 
  at System.Linq.Expressions.Compiler.LambdaCompiler.Compile (System.Linq.Expressions.LambdaExpression lambda, System.Runtime.CompilerServices.DebugInfoGenerator debugInfoGenerator) <0x404c5730 + 0x000bb> in <filename unknown>:0 
  at System.Linq.Expressions.Expression`1[TDelegate].Compile () <0x404c56e0 + 0x0000f> in <filename unknown>:0 
  at Akka.Util.Reflection.ExpressionExtensions.GetArguments (System.Linq.Expressions.NewExpression newExpression) <0x404c38b0 + 0x0011f> in <filename unknown>:0 
  at Akka.Actor.Props.Create[TActor] (System.Linq.Expressions.Expression`1 factory, Akka.Actor.SupervisorStrategy supervisorStrategy) <0x404c3690 + 0x000d7> in <filename unknown>:0 
  at Akka.Actor.LocalActorRefProvider+<CreateSystemGuardian>c__AnonStorey1.<>m__0 () <0x404bfe00 + 0x00143> in <filename unknown>:0 
  at Akka.Actor.LocalActorRefProvider.CreateRootGuardianChild (Akka.Actor.LocalActorRef rootGuardian, System.String name, System.Func`1 childCreator) <0x404b4970 + 0x0003e> in <filename unknown>:0 
  at Akka.Actor.LocalActorRefProvider.CreateSystemGuardian (Akka.Actor.LocalActorRef rootGuardian, System.String name, Akka.Actor.LocalActorRef userGuardian) <0x404bf5b0 + 0x001f3> in <filename unknown>:0 
  at Akka.Actor.LocalActorRefProvider.Init (Akka.Actor.Internal.ActorSystemImpl system) <0x404b02a0 + 0x00297> in <filename unknown>:0 
  at Akka.Actor.Internal.ActorSystemImpl.Start () <0x404afb50 + 0x000e8> in <filename unknown>:0
there's some sort of actor we're using in the test fixture for these Akka.Streams tests
which might have something that is lazily initialized or asynchronously started
and there's a race condition by which if something else happens during actor system startup before that lazy loading completes, some part of the actor creation process for the built-in actors in the fixture itself fails
are there any special test actors that these fixtures use by default in the Akka.Streams.Tests library?
going to test this theory by running the suite again
and seeing if the spec failures are any different
any ideas @Silv3rcircl3 ?
Marc Piechura
@marcpiechura
Sep 14 2016 06:49
@Aaronontheweb not out of my head, haven't seen this error ever before
I need to look into the specs but as far as I remember these "one delayed one failed publisher" specs are all in a base class and you need to implement a factory method which is called from the tests
So you probably only need to fix it in one place ;)
I don't have time the next two days but I could look into it over the weekend if you haven't fixed it until then
Peter Hvidgaard
@hvidgaard
Sep 14 2016 11:14
If I have an actor that must update the UI, must I create it in HOCON or can I use it programmatically without config?
Arjen Smits
@Danthar
Sep 14 2016 11:39
You can pass the correct dispatcher programmatically
Peter Hvidgaard
@hvidgaard
Sep 14 2016 12:08
@Danthar

If I use

Context.ActorOf(Context.DI().Props<UiWorkerActor>().WithDispatcher("akka.actor.synchronized-dispatcher"), "ui-worker");

I get the following error: "The current SynchronizationContext may not be used as a TaskScheduler."

Am I missing something?
I'm using 1.1.1.27
Bartosz Sypytkowski
@Horusiath
Sep 14 2016 12:49
@hvidgaard you're probably using async somewhere in your UiWorkerActor
you cannot combine that with synchronized-dispatcher
Peter Hvidgaard
@hvidgaard
Sep 14 2016 12:50
@Horusiath The error comes when the child actor is created.
Bartosz Sypytkowski
@Horusiath
Sep 14 2016 12:51
I would guess, that one of the actor or its children is using something like async version of Receive
Peter Hvidgaard
@hvidgaard
Sep 14 2016 12:52
It only calls Recieve<>(), no async code.
same for the parent.
the parent is created on the UI thread, is that a problem?
Bartosz Sypytkowski
@Horusiath
Sep 14 2016 12:58
can you show the error stacktrace? - it doesn't come from akka
Peter Hvidgaard
@hvidgaard
Sep 14 2016 13:00
This message was deleted
at Akka.Actor.LocalActorRefProvider.ActorOf(ActorSystemImpl system, Props props, IInternalActorRef supervisor, ActorPath path, Boolean systemService, Deploy deploy, Boolean lookupDeploy, Boolean async)
at Akka.Actor.ActorCell.MakeChild(Props props, String name, Boolean async, Boolean systemService)
at Akka.Actor.ActorCell.ActorOf(Props props, String name, Boolean isAsync, Boolean isSystemService)
at Akka.Actor.ActorCell.ActorOf(Props props, String name)
at FF.Frontends.WPF.SearchModule.Actors.SearchActor..ctor(SearchResultViewModel searchResultViewModel) in C:\repo\FF3.0\Source\FF\Frontends\Wpf\Modules\FF.Wpf.SearchModule\Actors\SearchActor.cs:line 22
at lambda_method(Closure )
at SimpleInjector.InstanceProducer.BuildAndReplaceInstanceCreatorAndCreateFirstInstance()
at SimpleInjector.InstanceProducer.GetInstance()
inner exception
at System.Threading.Tasks.SynchronizationContextTaskScheduler..ctor()
at Akka.Dispatch.CurrentSynchronizationContextExecutorServiceFactory.Produce(String id)
at Akka.Dispatch.Dispatcher.LazyExecutorServiceDelegate.<>c__DisplayClass3_0.<.ctor>b__0()
at Akka.Util.FastLazy`1.get_Value()
at Akka.Dispatch.Dispatcher.ExecuteTask(IRunnable run)
at Akka.Dispatch.CurrentSynchronizationContextDispatcherConfigurator.Dispatcher()
at Akka.Dispatch.Dispatchers.Lookup(String dispatcherName)
at Akka.Actor.LocalActorRefProvider.ActorOf(ActorSystemImpl system, Props props, IInternalActorRef supervisor, ActorPath path, Boolean systemService, Deploy deploy, Boolean lookupDeploy, Boolean async)
Bartosz Sypytkowski
@Horusiath
Sep 14 2016 13:08
from what I see it looks like the child (the one which is going to use synchronized-dispatcher) is created from thread that doesn't have SynchronizationContext set (which is basically any background/non-ui thread)
you may need to check if synchronization context is set, and if not, set it manually if (SynchronizationContext.Current == null) SynchronizationContext.SetSynchronizationContext(context)
Peter Hvidgaard
@hvidgaard
Sep 14 2016 13:11
But that requires that I have access to it? okay, I'll see what I can figure out without hard coupling everything together.
Bartosz Sypytkowski
@Horusiath
Sep 14 2016 13:11
by default sychronization context is set only in UI thread, so you may want to capture it from there or use framework-specific one (i.e. Windows Forms does have it's own class for that)
Aaron Stannard
@Aaronontheweb
Sep 14 2016 16:02
@Silv3rcircl3 yeah, the FlowInterleave specs implement a base class but the others do not
got 13 totally different random specs to fail this time
in Akka.Streams
so I think that it's something across the board with the DSL compiler
or at least something we're using to test it
dammit Mono
why you have to be so weird
Marc Piechura
@marcpiechura
Sep 14 2016 16:24
I see, I really have no idea. @alexvaluyskiy mentioned that https://github.com/akkadotnet/akka.net/blob/ade2176dd5c1342d248c2a06bb72c81a8add18c8/src/core/Akka.Streams/Dsl/Keep.cs will not work on .netcore and since it contains some generic edge case stuff it's maybe worth a shot
Maybe the part that is missing on netcore is also not implemented on mono
Maciek Misztal
@mmisztal1980
Sep 14 2016 21:50
@Aaronontheweb In a cluster: when a role-leader goes down and a new one gets elected, is there an event that signals it?
Aaron Stannard
@Aaronontheweb
Sep 14 2016 21:55
yep
RoleLeaderChanged
can subscribe to it in the gossip
@Silv3rcircl3 looks like it's something being passed into Props
during actor system startup
Maciek Misztal
@mmisztal1980
Sep 14 2016 21:57
does it contain role name information?
Maciek Misztal
@mmisztal1980
Sep 14 2016 21:59
awesome, cheers!
Aaron Stannard
@Aaronontheweb
Sep 14 2016 21:59
@Silv3rcircl3 weird.... weird... weird
private LocalActorRef CreateSystemGuardian(LocalActorRef rootGuardian, string name, LocalActorRef userGuardian)     //Corresponds to Akka's: override lazy val guardian: systemGuardian
        {
            return CreateRootGuardianChild(rootGuardian, name, () =>
            {
                var props = Props.Create(() => new SystemGuardianActor(userGuardian), _systemGuardianStrategy);

                var systemGuardian = new LocalActorRef(_system, props, DefaultDispatcher, _defaultMailbox, rootGuardian, RootPath/name);
                return systemGuardian;
            });
        }
this is the culprit
according to the stack trace
Ronnie Overby
@ronnieoverby
Sep 14 2016 21:59
I created and configured a custom priority mailbox and I see akka is instantiating it, but the PriorityGenerator method is never called
Aaron Stannard
@Aaronontheweb
Sep 14 2016 21:59
but, this line of code is literally called in the setup of every AkkaSpec
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:00
Can someone help me with that?
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:00
btw, I'd like to do some mono builds with Akka, do you have any good material on how to get started with building stuff on mono? anything special I need to pay attention to ?
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:00
@ronnieoverby sure thing, mind posting a copy of your mailbox
@mmisztal1980 biggest thing: always use the Path class to construct your paths
the / and \ stuff will drive you insane
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:00
    public class Mailbox : UnboundedPriorityMailbox
    {
        public Mailbox(Settings settings, Config config) : base(settings, config)
        {                
        }

        protected override int PriorityGenerator(object message)
        {
            if (message is Unsubscribe || message is Subscribe)
                return 0;

            return 1;
        }
    }
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:01
and this isn't getting called?
running 1.1.1 right?
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:01
Correctimundo
<package id="Akka" version="1.1.1" targetFramework="net45" />
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:01
(we changed all of the mailbox loading stuff in 1.1)
ok
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:01
I couldn't get it to use it with HOCON
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:01
let me take a look at my spec real quick
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:02
but using .WithMailbox I see akka call the ctor of the mailbox
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:02
hmmm
HOCON wouldn't load it?
using the FQN?
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:02
no, but that's a different story
I did register the type/key with hocon
and I refer to "pubsub-mailbox" when calling .WithMailbox
off of the props
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:03
but in order to build a project I basically need to run xbuild on a .sln file, with normal .NET 4.6 references?
or .NET 4.5.2 ?
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:03
@mmisztal1980 .NET 4.6.1 will work
so anything up to that
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:04
right
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:04
I'd definitely recommend using something like CAKE / FAKE if you intend to do xplat builds
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:04
oh I'm pretty proficient with CAKE
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:04
that can switch automatically between msbuild and xbuild
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:04
does wonders for us
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:04
under the covers
nice!
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:04
yeah, using the DotNetBuild task, this one is smart enough to pick MSBuild/XBuild
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:05
@ronnieoverby checking my UnboundedPriorityMailbox spec
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:05
we've got CD to Azure AppServices in under 10mins, with deployment slots and what not
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:05
going to see if the debugger hits it
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:05
CAKE is awesome
I mean, the whole process takes like 10mins in vsts, with a build and a triggered release, but it's still pretty good :)
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:06
@mmisztal1980 takes 50 minutes to build Akka.NET with full CI suite
would take 2 hours if we didn't run it in parallel :p
(multi-node tests, unit tests, and perf tests take a while)
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:06
would take 2 hours if we didn't run it in parallel :p
Heard you talking about that on dotnet rocks
or some podcast
insanely long build process :)
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:07
lol
yeah, it's pretty long
but it's effective
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:07
I hear ya, well, using TPL is perfectly legal in CAKE, so there's plenty of room to paralellize :D
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:07
we parallelize parts of the build across multiple build agents
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:08
makes sense
using TC
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:08
so we have usually 3 computers running the really lengthy parts at the same time
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:08
Maybe you should parallelize the CI suite over an orleans cluster
Maciek Misztal
@mmisztal1980
Sep 14 2016 22:08
's build triggers?
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:08
we have a single build step that triggers everything
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:08
That was humor. That's what I just did right there.
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:08
causes a cascade of 5 steps
blob
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:10
I see the screenshot... but hot diggity dog it's not working for me
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:10
think I know what the issue is
could you show me your HOCON declaration and your props call?
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:10
I should see that breakpoint get hit anytime a message delivered to actor with mailbox right?
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:11
correct
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:11
ye
<akka>
<hocon>
<![CDATA[
akka {
loggers = ["AFS.BatchService.Actors.CtxLogger, AFS.BatchService"]
suppress-json-serializer-warning = on
}
pubsub-mailbox {
mailbox-type = "AFS.BatchService.Actors.PubSub+Mailbox, AFS.BatchService"
}
]]>
</hocon>
</akka>
ack I cant paste code to save my life
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:11
np
I got the idea
could you show me the props call?
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:11
_actorSystem.ActorOf(Props.Create(() => new PubSub()).WithMailbox("pubsub-mailbox"), nameof(PubSub));
If you haven't caught on yet I'm trying to prioritize Subscription/Unsubscription messages over publish messages to a pub/sub actor
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:13
oh man
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:13
?
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:13
lol try this
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:13
the suspense!
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:13
mailbox-type : "AFS.BatchService.Actors.PubSub+Mailbox, AFS.BatchService"
with the colon instead
the other possibility here is that the HOCON parser in Akka.NET can't deal with the nested type in the FQN
which would be... odd
since you said you can see it being instantiated
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:14
leave it to me to find an edge case the very first time I try to use something. It never fails
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:15
just a guess - I think an = should work
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:15
yeah it's a nested class because no other actor would ever need this mailbox
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:15
but I noticed that's what we did in our specs
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:15
no that didn't help
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:15
ok
theory 2
nested types
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:15
1 sec let me try
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:16
theory 3: you can verify that this actor is actually receiving messages, right?
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:16
theory 3 yes I def see receive handlers getting hit
theory 2 is no good
unnested type gets constructed but overridden method never called
I can maybe work up an isolated failing test for you
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:18
if messages are making it through then, means that either your actor isn't using this mailbox
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:18
you see my props creation, though
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:18
yep
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:18
and I see a debugger breaking in the mailbox ctor
want a stack trace at that point?
idk if it will help or not
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:19
nah, I believe you on that
do me a favor
throw an exception in the PriorityGenerator
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:19
?
ok
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:19
we call this a "tracer round"
lol
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:19
i like it
nothing happened
    protected override int PriorityGenerator(object message)
    {
        throw new ApplicationException("BLARGH!");

        if (message is Unsubscribe || message is Subscribe)
            return 0;

        return 1;
    }
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:20
alrighty then
and the actor still received its message?
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:21
yes
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:22
you know... I wonder....
this would be extremely weird
public abstract class UnboundedPriorityMailbox : MailboxType, IProducesMessageQueue<UnboundedPriorityMessageQueue>
    {
        protected abstract int PriorityGenerator(object message);

        public int InitialCapacity { get; }

        public const int DefaultCapacity = 11;

        public sealed override IMessageQueue Create(IActorRef owner, ActorSystem system)
        {
            return new UnboundedPriorityMessageQueue(PriorityGenerator, InitialCapacity);
        }

        protected UnboundedPriorityMailbox(Settings settings, Config config) : base(settings, config)
        {
            InitialCapacity = DefaultCapacity;
        }
    }
this is the unbounded priority mailbox in its full glory
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:22
pretty simple
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:22
it's just a type provider
it takes your priority function and passes it into that queue
I wonder, if by some race condition
during the construction of this object
if it's possible
public class UnboundedPriorityMessageQueue : BlockingMessageQueue
    {
        private readonly ListPriorityQueue _prioQueue;

        public UnboundedPriorityMessageQueue(int initialCapacity)
        {
            _prioQueue = new ListPriorityQueue(initialCapacity);
        }

        public UnboundedPriorityMessageQueue(Func<object, int> priorityGenerator, int initialCapacity) : this(initialCapacity)
        {
            _prioQueue.SetPriorityCalculator(priorityGenerator);
        }

        internal void SetPriorityGenerator(Func<object, int> priorityGenerator)
        {
            _prioQueue.SetPriorityCalculator(priorityGenerator);
        }
that this queue never ends up getting to call the SetPriorityCalculator
would you mind reporting a bug for this?
I have an idea on how to test it
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:26
sure thing... just the bug? you need any code/tests or anything?
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:26
just the bug and a test
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:26
ok
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:26
thanks @ronnieoverby
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:27
thanks for the help
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:27
np, it would be super weird if this were the case
since these are all synchronous functions
looks like this is a good candidate for a model-based test
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:29
?
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:29
in fact, I should probably just make the priority calculator immutable
I have no idea why it isn't
I still need to publish post 3 in that series
Ronnie Overby
@ronnieoverby
Sep 14 2016 22:30
will read :+1:
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:34
@Silv3rcircl3 so yeah, this is a stumper.... the LocalActorRefProvider throwing when creating the system guardian, but only inside Akka.Streams.Tests and only randomly on some of them?
well, always one sure fire way to fix this
not use the expression compiler that way, period
Aaron Stannard
@Aaronontheweb
Sep 14 2016 22:50
ok, inlined that part of the guardian startup process
i don't know why that failed on only the Akka.Streams.Tests
let's see if this works
Aaron Stannard
@Aaronontheweb
Sep 14 2016 23:24
yep, that did the trick
although the Thread.Interrupt call we make on one of the specs caused the XUnit test runner to blow up
which is actually kind of entertaining TBH
but otherwise the Akka.Streams.Tests are passing now