Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 23:08
    me-slove opened #129
  • 19:51

    Aaronontheweb on dev

    added EventStreamThroughputSpec… (compare)

  • 19:51
    Aaronontheweb closed #4373
  • 18:21
    beachwalker commented #3050
  • 18:20
    beachwalker commented #3050
  • 18:20
    beachwalker commented #3050
  • 18:18
    beachwalker commented #3050
  • 17:57
    ismaelhamed synchronize #4350
  • 16:43
    Arkatufus synchronize #4375
  • 16:08
    Arkatufus commented #4375
  • 15:48
    dependabot-preview[bot] synchronize #3986
  • 15:48

    dependabot-preview[bot] on nuget

    Bump NUnit from 3.6.1 to 3.12.0… (compare)

  • 15:47
    dependabot-preview[bot] edited #3986
  • 15:47
    dependabot-preview[bot] synchronize #4337
  • 15:47

    dependabot-preview[bot] on nuget

    Bump FSharp.Quotations.Evaluato… (compare)

  • 15:47
    dependabot-preview[bot] edited #4337
  • 15:47
    Aaronontheweb synchronize #4375
  • 15:46
    dependabot-preview[bot] edited #3986
  • 15:46
    Aaronontheweb synchronize #4373
  • 15:46
    dependabot-preview[bot] edited #4337
Ronnie Overby
@ronnieoverby
1 sec let me try
Aaron Stannard
@Aaronontheweb
theory 3: you can verify that this actor is actually receiving messages, right?
Ronnie Overby
@ronnieoverby
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
if messages are making it through then, means that either your actor isn't using this mailbox
Ronnie Overby
@ronnieoverby
you see my props creation, though
Aaron Stannard
@Aaronontheweb
yep
Ronnie Overby
@ronnieoverby
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
nah, I believe you on that
do me a favor
throw an exception in the PriorityGenerator
Ronnie Overby
@ronnieoverby
?
ok
Aaron Stannard
@Aaronontheweb
we call this a "tracer round"
lol
Ronnie Overby
@ronnieoverby
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
alrighty then
and the actor still received its message?
Ronnie Overby
@ronnieoverby
yes
Aaron Stannard
@Aaronontheweb
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
pretty simple
Aaron Stannard
@Aaronontheweb
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
sure thing... just the bug? you need any code/tests or anything?
Aaron Stannard
@Aaronontheweb
just the bug and a test
Ronnie Overby
@ronnieoverby
ok
Aaron Stannard
@Aaronontheweb
thanks @ronnieoverby
Ronnie Overby
@ronnieoverby
thanks for the help
Aaron Stannard
@Aaronontheweb
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
?
Aaron Stannard
@Aaronontheweb
in fact, I should probably just make the priority calculator immutable
I have no idea why it isn't