`Async.jankYielder` is known to, unfortunately, cause jank by creating a lot of
immediately resolved promises that must be then GCed. For a collection of 50
items, it will create 50 promises and 49 of them will immediately resolve.
Instead of `Async.jankYielder`, we now have `Async.yieldState`, which simply
keeps track of whether or not the caller should yield to the event loop. Two
higher level looping constructs are built on top of it:
* `Async.yieldingIterator`, which has been rewritten to not create extraneous
promises; and
* `Async.yieldingForEach`, which is a replacement for awaiting
`Async.jankYielder` in a loop. Instead, it accepts the loop body as a
function.
Each of these can share an instance of an `Async.yieldState`, which allows an
object with multiple loops to yield every N iterations overall, instead of
every N iterations of each loop, which keeps the behaviour of using one
`Async.jankYielders` in multiple places.
Differential Revision: https://phabricator.services.mozilla.com/D26229
--HG--
extra : moz-landing-system : lando
Right now we can end up with Source objects with multiple source actors that
share the same ID, since nothing tries to make them unique. This patch
makes sources created in Jest tests each get an incrementing actor ID.
Differential Revision: https://phabricator.services.mozilla.com/D27134
--HG--
extra : moz-landing-system : lando
With the previous commits done, the 'newSources' actions expose implementation details that we want
to keep private within the file. Nothing outside of these actions should be instantiating Source
objects anymore.
Differential Revision: https://phabricator.services.mozilla.com/D27133
--HG--
extra : moz-landing-system : lando
We move source creation into the action itself so that the action can inspect the current
state of the store in order to decide how to create the source, where previously we were
forced to insert the source and have the reducer itself handle cases where the source
already existed.
Differential Revision: https://phabricator.services.mozilla.com/D27132
--HG--
extra : moz-landing-system : lando
We want the source actions to be responsible for creating the Source objects rather than creating
them ahead of time. This means that the action itself can make decisions about how to handle new
sources appearing, where right now that decision is made too early by the logic queueing the items.
Differential Revision: https://phabricator.services.mozilla.com/D27131
--HG--
extra : moz-landing-system : lando
We want the two types of queue items to have different datatypes, so we clearly distinguish the
two types of sources that are queued.
Differential Revision: https://phabricator.services.mozilla.com/D27130
--HG--
extra : moz-landing-system : lando
Reducers should be able to use actions to tell what is happening to the workers, and
by combining them into one action they are unable to know what is being added and
what is being removed. Splitting them up means reducers have more information.
Differential Revision: https://phabricator.services.mozilla.com/D27128
--HG--
extra : moz-landing-system : lando
Bug 1500504 added a version check for the SDK, but it only does the
check if --with-macos-sdk is used. We should also check the version when
using the default SDK.
Note that this means we now set MACOS_SDK_DIR to be the default SDK even
if it wasn't set explicitly from --with-macos-sdk
Differential Revision: https://phabricator.services.mozilla.com/D17727
--HG--
extra : moz-landing-system : lando
Reduce chunks from 8 to 3. Each test task has at least a couple of minutes
of overhead, so fewer chunks improves overall efficiency. At 3 chunks, each
one still completes reasonably quickly (less than 20 minutes).
Differential Revision: https://phabricator.services.mozilla.com/D27339
--HG--
extra : moz-landing-system : lando
stderr does not go anywhere by default on Android. Debugging output is
conventionally sent to the Android log via special functions like
__android_log_print.
We already have logic for handling this in nsCRTGlue's printf_stderr, but
I don't think we can use that in MFBT.
Differential Revision: https://phabricator.services.mozilla.com/D26985
--HG--
extra : moz-landing-system : lando
Stop running Tss(tp6) and T(bcv) on ccov builds on central -- the remaining 2 cases
missed in the previous bug.
Differential Revision: https://phabricator.services.mozilla.com/D27313
--HG--
extra : moz-landing-system : lando
So, instead of fetches['by-test-platform']['fetch'], we have
fetches['fetch']['by-test-platform'].
Differential Revision: https://phabricator.services.mozilla.com/D27227
--HG--
extra : moz-landing-system : lando
To avoid sending ipc messages after the ipc channel is closed, check |mIPCOpen| before sending messages.
Differential Revision: https://phabricator.services.mozilla.com/D26089
--HG--
extra : moz-landing-system : lando