Occasionally, we might try to apply synced bookmarks when a transaction
is already in progress. Consider something like this:
1. The user clicks the star button, which adds a bookmark to the
default folder. Under the hood, this runs a transaction to
completion—`BEGIN`, some `INSERT`s and `UPDATE`s, then `COMMIT`.
2. The `item-added` observer notification kicks off a sync.
3. The user, with the star UI still open, picks a new folder for the
bookmark. This moves the bookmark under the hood.
4. To move the bookmark, we run `BEGIN` on the Places connection's
async thread. Remember, `Sqlite.jsm` runs async statements one at a
time.
5. Concurrently, the merge runnable is scheduled on the async thread.
It's not aware of the `Sqlite.jsm` transaction queue, and doesn't
know that a transaction for the move is already open.
6. The merger tries to open its own transaction with `BEGIN`, fails
noisly, and returns a "cannot start a transaction within a
transaction" error back to the main thread.
7. The move transaction started in (4) runs to completion, updating
the new bookmark's parent and committing the changes.
This is a case of bad timing—retrying the sync once the user finishes
making changes will work—but reports errors in telemetry and logs.
This commit downgrades those to warnings.
Depends on D63732
Differential Revision: https://phabricator.services.mozilla.com/D63734
--HG--
extra : moz-landing-system : lando
Previously, `mozIStorageConnection#transactionInProgress` returned true
only if a transaction was started via `beginTransaction()`. This meant
that manually executing `BEGIN`, as `Sqlite.jsm` and the Rust bindings
do, wouldn't accurately report if a transaction was in progress.
Similarly, the flag wasn't accurate in cases where SQLite automatically
rolled back a transaction.
Fortunately, SQLite provides the `sqlite3_get_autocommit()` function,
which we can use to determine if a transaction is open or not. This
commit refactors the `transactionInProgress` getter, along with all
`Connection` methods that depend on it, to use the SQLite API instead
of managing that state on the connection. `mozStorageTransaction` and
`Sqlite.jsm` still use their own flags to decide whether to commit
their transactions, for reasons explained in the IDL comment.
This commit also moves `transactionInProgress` to
`mozIStorageAsyncConnection`, so that `Sqlite.jsm` can use it, and
exposes it to Rust.
Differential Revision: https://phabricator.services.mozilla.com/D63732
--HG--
extra : moz-landing-system : lando
Instead of skipping entire files, ifdef out the individual tests that are
failing. This allows us to audit them one at a time to re-enable, while
preventing regressions in tests in those files that are already passing.
Differential Revision: https://phabricator.services.mozilla.com/D65024
--HG--
extra : moz-landing-system : lando
Changes to the firefox-snap Docker image to support building Thunderbird Snap
packages as well.
Replaced hardcoded "firefox" instances in runme.sh with $PRODUCT variable and
renamed "snapcraft.yaml.in" to "firefox.snapcraft.yaml.in".
Differential Revision: https://phabricator.services.mozilla.com/D63035
--HG--
rename : taskcluster/docker/firefox-snap/snapcraft.yaml.in => taskcluster/docker/firefox-snap/firefox.snapcraft.yaml.in
extra : moz-landing-system : lando
This patch adds support for color management in BMPs added in
BITMAPV4HEADER and BITMAPV5HEADER. While display of BMPs is relatively
rare this comes in handy when interacting with the Windows clipboard.
Differential Revision: https://phabricator.services.mozilla.com/D64880
--HG--
extra : moz-landing-system : lando
This is based on the IonBuilder code that was tidied up last week in
bug 1380281 and bug 1478350.
Differential Revision: https://phabricator.services.mozilla.com/D64976
--HG--
extra : moz-landing-system : lando
This code didn't handle the missing optional rangeIndex parameter correctly.
Probably because all tests for highlightResults used a rangeIndex.
Differential Revision: https://phabricator.services.mozilla.com/D64906
--HG--
extra : moz-landing-system : lando
If we don't mark the return-value as being used, it may get optimised out.
When we then re-execute `JSOp::CheckReturn` in baseline after a bailout, we may
get `JS_OPTIMIZED_OUT`, which is unexpected at this point.
Drive-by fix:
Only call `arr.setImplicitlyUsedUnchecked()` in `jsop_optimize_spreadcall` when
`arr` isn't used.
Differential Revision: https://phabricator.services.mozilla.com/D64920
--HG--
extra : moz-landing-system : lando
This patch adds support for color management in BMPs added in
BITMAPV4HEADER and BITMAPV5HEADER. While display of BMPs is relatively
rare this comes in handy when interacting with the Windows clipboard.
Differential Revision: https://phabricator.services.mozilla.com/D64880
--HG--
extra : moz-landing-system : lando
Add optional 'toFileName' property to the 'pageSettings' object
passed into tabs.saveAsPDF().
Differential Revision: https://phabricator.services.mozilla.com/D64614
--HG--
extra : moz-landing-system : lando
Calling the merge day automation requires an action so that we can pass in parameters such as source and destination repository and branch.
Differential Revision: https://phabricator.services.mozilla.com/D62763
--HG--
extra : moz-landing-system : lando