- also clean up left-over reference to “buddy-wakeup-threshold”
make unbalanced Address() constructor private, fix parsing, see #1806
split systemDispatch(Create()) into systemEnqueue(Create()) directly after createMailbox and registerForExecution from within Dispatcher.attach() (resp. CallingThreadDispatcher.register() does its own thing)
- previously relied on resize() being invoked before enqueueing to the mailbox, which is not at all guaranteed any longer.
Wip 1538 http docs he
Replace akka.actor.timeout with specfic settings. See #1808
- change from messageQueue.numberOfMessages to maintaining an AtomicLong for performance reasons - add comments/scaladoc where missing - remove some assert()s - fix ResiserSpec to employ buddy-wakeup-threshold
- add new config item "buddy-wakeup-threshold" which defaults to 5 - if BWT>=0, then check mailbox.numberOfMessages in case the target actor was not scheduled during dispatch and schedule a buddie if that is found >=BWT (BWT is a getfield) - if during unregister() there are messages in the queue, schedule a buddie This way people can tune which behavior they want, knowing full well that numberOfMessages is O(n).
Normally the ActorCell would register the actor with the dispatcher (yeah, I moved it into the logical order, because the other one was specifically done for BD but does not work out) and then dispatch the Create() message. This does not work for BD, because then the actor could potentiall process a message before Create() is enqueued, so override systemDispatch() to drop Create() and insert that during register() (which is called from attach()), making sure to achieve the following order: - enqueue Create() - register with dispatcher - add to buddies - schedule mailbox
System.identityHashCode is not guaranteed to be consistent with equals() (cannot be, just imagine more than 2^32 objects); fix it by checking equals in case 0 would be returned and fall back to a real Comparator in case that’s needed.