searching for reviewer(tcsc)
caae3550143323fd4d93576cc0d74bbff0c90df9: Bug 1643804 - Always resolve the promise if fetching extension storage observer notifications fails. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Fri, 05 Jun 2020 20:38:42 +0000 - rev 534207
Push 37484 by dluca@mozilla.com at Sat, 06 Jun 2020 09:46:03 +0000
Bug 1643804 - Always resolve the promise if fetching extension storage observer notifications fails. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D78571
f350b8dff15db04d352d92aa8f46465aae5057ec: Bug 1639942 - Correctly register `Extension-Storage` engine alternatives. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Thu, 21 May 2020 18:55:37 +0000 - rev 531491
Push 37440 by abutkovits@mozilla.com at Fri, 22 May 2020 09:43:16 +0000
Bug 1639942 - Correctly register `Extension-Storage` engine alternatives. r=tcsc Alternative engines are registered using the lowercased version of the keys in the modules object. But `extension-storage` is hyphenated, so we need to use `Extension-Storage` (not `ExtensionStorage`) as the key name, to match the name of the engine and its collection. Without the hyphen, we'll register the alternative as `extensionstorage`, so it'll never be used because everything else expects the engine to be called `extension-storage`. Differential Revision: https://phabricator.services.mozilla.com/D76355
c9ca86d98171f6853176bb78e65829ab5f4badea: Bug 1628068 p2 - Implement viaduct gecko backend. r=tcsc,dragana,froydnj
Edouard Oger <eoger@fastmail.com> - Tue, 12 May 2020 21:36:19 +0000 - rev 529471
Push 37409 by apavel@mozilla.com at Wed, 13 May 2020 03:44:05 +0000
Bug 1628068 p2 - Implement viaduct gecko backend. r=tcsc,dragana,froydnj Differential Revision: https://phabricator.services.mozilla.com/D70257
013a469557c1d83bc5ebdbccd28b462040b91bb9: Bug 1628068 p2 - Implement viaduct gecko backend. r=tcsc,dragana,froydnj
Edouard Oger <eoger@fastmail.com> - Mon, 11 May 2020 21:01:19 +0000 - rev 529239
Push 37405 by csabou@mozilla.com at Tue, 12 May 2020 04:04:10 +0000
Bug 1628068 p2 - Implement viaduct gecko backend. r=tcsc,dragana,froydnj Differential Revision: https://phabricator.services.mozilla.com/D70257
928a5891c55dd27ecf504d3eec0e7fa30d5be471: Bug 1628068 p2 - Implement viaduct gecko backend. r=tcsc,dragana,froydnj
Edouard Oger <eoger@fastmail.com> - Mon, 11 May 2020 20:19:16 +0000 - rev 529230
Push 37405 by csabou@mozilla.com at Tue, 12 May 2020 04:04:10 +0000
Bug 1628068 p2 - Implement viaduct gecko backend. r=tcsc,dragana,froydnj Differential Revision: https://phabricator.services.mozilla.com/D70257
1ea8f742ca69f20559fb199693d8596ff8985e05: Bug 1628068 p2 - Implement viaduct gecko backend. r=tcsc,dragana,froydnj
Edouard Oger <eoger@fastmail.com> - Mon, 11 May 2020 15:17:37 +0000 - rev 529192
Push 37405 by csabou@mozilla.com at Tue, 12 May 2020 04:04:10 +0000
Bug 1628068 p2 - Implement viaduct gecko backend. r=tcsc,dragana,froydnj Differential Revision: https://phabricator.services.mozilla.com/D70257
55299ca145f36448b0084ff2d65d7cc4ee24e845: Bug 1634626 - Add interrupt support for `StorageSyncArea`. r=markh,tcsc
Lina Cambridge <lina@yakshaving.ninja> - Mon, 04 May 2020 21:32:52 +0000 - rev 527987
Push 37379 by ccoroiu@mozilla.com at Tue, 05 May 2020 03:49:49 +0000
Bug 1634626 - Add interrupt support for `StorageSyncArea`. r=markh,tcsc This commit adds a `mozIInterruptible` implementation to `StorageSyncArea`, and changes `LazyStore` to get an a-s interrupt handle and interrupt pending operations. Differential Revision: https://phabricator.services.mozilla.com/D73414
21428ee332e8cfe90b15ff820ff3eb047c1d618c: Bug 1634626 - Refactor interruption in Golden Gate. r=markh,tcsc
Lina Cambridge <lina@yakshaving.ninja> - Mon, 04 May 2020 21:32:29 +0000 - rev 527986
Push 37379 by ccoroiu@mozilla.com at Tue, 05 May 2020 03:49:49 +0000
Bug 1634626 - Refactor interruption in Golden Gate. r=markh,tcsc This commit removes the `nsICancelable` return values from all `mozIBridgedSyncEngine` methods, and replaces them with a `mozIInterruptible` interface that can be implemented by store classes that support interrupting. The `nsICancelable` pattern was intended to make each operation interruptible, without affecting the others. But we can't guarantee that with SQLite, because it only has a way to interrupt all running statements on a connection, not specific ones. Further, this pattern doesn't match what we currently do in a-s, where we create an internal "interrupt scope" for each operation, and hand out an "interrupt handle" for interrupting all in-progress operations. Storage classes like `StorageSyncArea` can opt in to interruption by implementing `mozIInterruptible`. It's a separate interface to protect against accidental misuse: because it interrupts all statements on the connection, it might lose writes if the current operation is a `set`, for example. But it's useful for testing and debugging, so we still expose it. This commit also changes Golden Gate ferries to hold weak references to the `BridgedEngine`, so that they don't block teardown. Differential Revision: https://phabricator.services.mozilla.com/D73413
5c2780d608eb517f9f78548d3e99b0adc010414b: Bug 1630222 - Decrease webextension sync frequency. r=tcsc
Sven Marnach <sven@marnach.net> - Wed, 22 Apr 2020 21:58:18 +0000 - rev 525527
Push 37339 by nerli@mozilla.com at Thu, 23 Apr 2020 09:52:48 +0000
Bug 1630222 - Decrease webextension sync frequency. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D72055
fb65955a1a82267679e52698c978979623bfb9f5: Bug 1596322 - Add XPCOM bindings for Rust Sync engines. r=markh,tcsc,LougeniaBailey
Lina Cambridge <lina@yakshaving.ninja> - Thu, 09 Apr 2020 15:45:37 +0000 - rev 523241
Push 37298 by dvarga@mozilla.com at Fri, 10 Apr 2020 02:59:09 +0000
Bug 1596322 - Add XPCOM bindings for Rust Sync engines. r=markh,tcsc,LougeniaBailey This commit adds a new crate for bridging Rust Sync engines to Desktop, and a `mozIBridgedSyncEngine` for accessing the bridge via JS. Naturally, the bridge is called Golden Gate. 😊 For more information on how to use it, please see `golden_gate/src/lib.rs`. Other changes include: * Ensuring the test Sync server uses UTF-8 for requests and responses. * Renaming `mozISyncedBookmarksMirrorLogger` to `mozIServicesLogger`, and moving it into the shared Sync interfaces. The `BridgedEngine` trait lives in its own crate, called `golden_gate_traits`, to make it easier to eventually move into a-s. `Interruptee` and `Interrupted` already exist in a-s, and are duplicated in this crate for now. Differential Revision: https://phabricator.services.mozilla.com/D65268
d8ef791a216599a1e158972843e0f4c5bd415b4f: Bug 1596322 - Add XPCOM bindings for Rust Sync engines. r=markh,tcsc,LougeniaBailey
Lina Cambridge <lina@yakshaving.ninja> - Thu, 09 Apr 2020 07:32:52 +0000 - rev 523065
Push 37296 by csabou@mozilla.com at Thu, 09 Apr 2020 09:55:00 +0000
Bug 1596322 - Add XPCOM bindings for Rust Sync engines. r=markh,tcsc,LougeniaBailey This commit adds a new crate for bridging Rust Sync engines to Desktop, and a `mozIBridgedSyncEngine` for accessing the bridge via JS. Naturally, the bridge is called Golden Gate. 😊 For more information on how to use it, please see `golden_gate/src/lib.rs`. Other changes include: * Ensuring the test Sync server uses UTF-8 for requests and responses. * Renaming `mozISyncedBookmarksMirrorLogger` to `mozIServicesLogger`, and moving it into the shared Sync interfaces. The `BridgedEngine` trait lives in its own crate, called `golden_gate_traits`, to make it easier to eventually move into a-s. `Interruptee` and `Interrupted` already exist in a-s, and are duplicated in this crate for now. Differential Revision: https://phabricator.services.mozilla.com/D65268
2b02e71f1780572d0131ce8706d19c05b19740d7: Bug 1596322 - Add XPCOM bindings for Rust Sync engines. r=markh,tcsc,LougeniaBailey
Lina Cambridge <lina@yakshaving.ninja> - Wed, 08 Apr 2020 20:18:37 +0000 - rev 523005
Push 37296 by csabou@mozilla.com at Thu, 09 Apr 2020 09:55:00 +0000
Bug 1596322 - Add XPCOM bindings for Rust Sync engines. r=markh,tcsc,LougeniaBailey This commit adds a new crate for bridging Rust Sync engines to Desktop, and a `mozIBridgedSyncEngine` for accessing the bridge via JS. Naturally, the bridge is called Golden Gate. 😊 For more information on how to use it, please see `golden_gate/src/lib.rs`. Other changes include: * Ensuring the test Sync server uses UTF-8 for requests and responses. * Renaming `mozISyncedBookmarksMirrorLogger` to `mozIServicesLogger`, and moving it into the shared Sync interfaces. The `BridgedEngine` trait lives in its own crate, called `golden_gate_traits`, to make it easier to eventually move into a-s. `Interruptee` and `Interrupted` already exist in a-s, and are duplicated in this crate for now. Differential Revision: https://phabricator.services.mozilla.com/D65268
783350b56e3eec3c41a20fffca4a1b8fb176783c: Bug 1608011 - ensure sync telemetry reports the storage node type. r=tcsc
Mark Hammond <mhammond@skippinet.com.au> - Thu, 09 Jan 2020 22:54:39 +0000 - rev 509638
Push 37000 by shindli@mozilla.com at Fri, 10 Jan 2020 05:03:08 +0000
Bug 1608011 - ensure sync telemetry reports the storage node type. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D59273
fe11ab9196ba2473c9a123c4624a5373a605f9f7: Bug 1608011 - ensure sync telemetry reports the storage node type. r=tcsc
Mark Hammond <mhammond@skippinet.com.au> - Thu, 09 Jan 2020 20:13:12 +0000 - rev 509620
Push 37000 by shindli@mozilla.com at Fri, 10 Jan 2020 05:03:08 +0000
Bug 1608011 - ensure sync telemetry reports the storage node type. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D59273
246a4db8140218f0ab29ff29cc38f624822126ec: Bug 1582317 - record the sync storage node type in the sync telemetry ping. r=tcsc
Mark Hammond <mhammond@skippinet.com.au> - Sat, 14 Dec 2019 04:26:05 +0000 - rev 507456
Push 36927 by aiakab@mozilla.com at Wed, 18 Dec 2019 00:51:03 +0000
Bug 1582317 - record the sync storage node type in the sync telemetry ping. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D55196
15f007ec4cacb3114aaa3dd76ed8c1d72e20cde9: Bug 1583897 - Send a telemetry event for new sendtab. r=tcsc,eoger,lina
Mark Hammond <mhammond@skippinet.com.au> - Mon, 14 Oct 2019 22:17:28 +0000 - rev 497469
Push 36690 by ncsoregi@mozilla.com at Tue, 15 Oct 2019 03:41:36 +0000
Bug 1583897 - Send a telemetry event for new sendtab. r=tcsc,eoger,lina Differential Revision: https://phabricator.services.mozilla.com/D48153
a136963723b2778e914e277b1415268e8e03cd74: Bug 1585211 - Have TPS enable sync when the test user logs in. r=tcsc
Mark Hammond <mhammond@skippinet.com.au> - Tue, 01 Oct 2019 00:32:01 +0000 - rev 495675
Push 36636 by nerli@mozilla.com at Tue, 01 Oct 2019 15:54:51 +0000
Bug 1585211 - Have TPS enable sync when the test user logs in. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D47714
6fdb8149f1d594bb652682602970da228f6d28e9: Bug 1582377 - Catch invalid URLs caused by bookmarks mirror tag query rewriting. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Thu, 19 Sep 2019 21:17:31 +0000 - rev 494122
Push 36596 by apavel@mozilla.com at Fri, 20 Sep 2019 09:45:58 +0000
Bug 1582377 - Catch invalid URLs caused by bookmarks mirror tag query rewriting. r=tcsc Rewriting a tag query might produce an invalid URL; for example, if the tag name contains special characters. We don't currently URL-encode tag folder names in queries (bug 1449939), so our only option is to flag the query as invalid. This should fix the "<URL> is not a valid URL" and "url is null" errors seen in telemetry. Differential Revision: https://phabricator.services.mozilla.com/D46435
2122076416b4c6dc0b23d2aba6946392f2bce4d4: Bug 1582377 - Don't recreate existing bookmarks mirror indexes in schema migrations. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Thu, 19 Sep 2019 21:17:22 +0000 - rev 494121
Push 36596 by apavel@mozilla.com at Fri, 20 Sep 2019 09:45:58 +0000
Bug 1582377 - Don't recreate existing bookmarks mirror indexes in schema migrations. r=tcsc Downgrading a profile and syncing downgrades the bookmarks mirror schema version, but leaves the new indexes in place. This causes the migration logic to throw an "index already exists" error on upgrade. The fix is to add an `IF NOT EXISTS`, to avoid recreating the index. Differential Revision: https://phabricator.services.mozilla.com/D46434
5f81726e0ea93defb807a636369ff222f7f85728: Bug 1582379 - Include more context in Rust mozStorage errors. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Thu, 19 Sep 2019 21:16:59 +0000 - rev 494120
Push 36596 by apavel@mozilla.com at Fri, 20 Sep 2019 09:45:58 +0000
Bug 1582379 - Include more context in Rust mozStorage errors. r=tcsc A low-frequency error that showed up in telemetry for new bookmark sync is "Storage operation failed with NS_ERROR_CANNOT_CONVERT_DATA", which occurs when we try to convert a variant to the wrong type. It would be helpful to include the type and column names for this case; for example, "Can't get i32 for column lastModified". Neither the type nor column name are PII; we want them to show up in telemetry. Differential Revision: https://phabricator.services.mozilla.com/D46433
9d31a1c17ef8ceb8195db01088bb635e4f575a0f: Bug 1578217 - remove the sync 'yellow state' telemetry. r=tcsc
Mark Hammond <mhammond@skippinet.com.au> - Thu, 19 Sep 2019 00:34:04 +0000 - rev 494025
Push 36593 by opoprus@mozilla.com at Thu, 19 Sep 2019 09:46:54 +0000
Bug 1578217 - remove the sync 'yellow state' telemetry. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D45765
7438ce6ba80cc644ce4d6dd77c59d6c844b75e05: Bug 1575757 - Don't use `WITH RECURSIVE` to build the local tree. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Tue, 27 Aug 2019 20:24:21 +0000 - rev 490269
Push 36499 by btara@mozilla.com at Wed, 28 Aug 2019 09:39:56 +0000
Bug 1575757 - Don't use `WITH RECURSIVE` to build the local tree. r=tcsc This commit replaces the `localItems` CTE with a single table scan that fetches item and structure info in one pass. It also adds a `structurePositions` index, so that fetching the remote structure can use a covering index and avoid an extra sorting step. Differential Revision: https://phabricator.services.mozilla.com/D43577
0ea06b6d2f7fe0e58c9ffc12de435e3376df59ce: Bug 1576810 - Avoid temp B-trees when fetching bookmarks mirror observer notifications. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Tue, 27 Aug 2019 20:24:12 +0000 - rev 490268
Push 36499 by btara@mozilla.com at Wed, 28 Aug 2019 09:39:56 +0000
Bug 1576810 - Avoid temp B-trees when fetching bookmarks mirror observer notifications. r=tcsc The queries we use to fetch observer notifications need to sort all rows in every notification table. This is expensive, so this commit avoids sorting by adding indexes on item levels to all tables, and removing the parent and position from the `ORDER BY` clause in non-test code. Differential Revision: https://phabricator.services.mozilla.com/D43576
6ead466a6fadee5eddf2c538122b1769977b00b9: Bug 1576796 - Report local and remote tree sizes in bookmarks mirror shutdown hang crash reports. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Tue, 27 Aug 2019 20:25:05 +0000 - rev 490267
Push 36499 by btara@mozilla.com at Wed, 28 Aug 2019 09:39:56 +0000
Bug 1576796 - Report local and remote tree sizes in bookmarks mirror shutdown hang crash reports. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D43575
14e4fa4d01814badcd0c9818e495a396d27597b3: Bug 1574382 - use yaml to parse TPS tests. r=tcsc
Mark Hammond <mhammond@skippinet.com.au> - Mon, 19 Aug 2019 20:55:05 +0000 - rev 489021
Push 36461 by malexandru@mozilla.com at Wed, 21 Aug 2019 03:48:55 +0000
Bug 1574382 - use yaml to parse TPS tests. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D42263
338b1c471939f0a45394b3e145cd22074477fe78: Bug 1567238 - Refactor the bookmarks mirror merge triggers to do less work. r=tcsc,markh
Lina Cambridge <lina@yakshaving.ninja> - Tue, 06 Aug 2019 23:48:03 +0000 - rev 486640
Push 36400 by aciure@mozilla.com at Wed, 07 Aug 2019 04:33:53 +0000
Bug 1567238 - Refactor the bookmarks mirror merge triggers to do less work. r=tcsc,markh This commit reduces the number of database writes and table scans needed to merge synced bookmarks. * Remove `fetchNew{Local, Remote}Contents`. Fetching the tree already scans the table, so we can piggyback on it to fetch content info for deduping. * Store completion ops in temp tables to only update changed parts of the local tree, and remove the `mergeStates` table and views. * Replace the `itemsToMerge` view with an indexed `itemsToApply` temp table. * Replace the `updateGuidsAndSyncFlags` trigger with a `changeGuidOps` table and a `changeGuids` trigger. * Replace the `updateLocalItems` trigger with an `apply_remote_items` function to bulk upsert new and updated items. * Replace the `structureToMerge` view with an `applyNewLocalStructureOps` table that holds parents and positions for moved items, and an `applyNewLocalStructure` trigger to update them. * Remove tombstones for revived items, update change counters, and flag mirror items as merged directly in `update_local_items_in_places`, instead of indirecting through temp tables. * Don't mark items flagged for reupload as merged, since we'll write them back to the mirror after upload. * Use a scalar subquery instead of a join in the `localTags` view to look up the tags root ID. * Replace `relatedIdsToReupload` with a `Store::prepare` method that flags all bookmarks with keyword-URL mismatches for reupload. * Trigger frecency updates for origins once, not for every item. * Remove two extra scans on `itemsAdded` and `itemsChanged` when recording observer notifications for changed keywords. * Notify all `bookmark-added` listeners in a single batch. This also fixes some edge cases: * Update root positions correctly after deleting a non-syncable root or item. * Keyword-URL mismatches may reupload more items than before, but now ensure that all bookmarks with the same URL have the same keyword. * Only set items with deduped GUIDs to `SYNC_STATUS_NORMAL` after merging. * Bump the last modified time for modified items only. Differential Revision: https://phabricator.services.mozilla.com/D39889
e36730a6d5898a03b25439a75340e46c8240848c: Bug 1538015 (part 2) - restrict when incoming synced prefs are applied. r=tcsc,pauljt,Gijs
Mark Hammond <mhammond@skippinet.com.au> - Tue, 25 Jun 2019 04:40:58 +0000 - rev 480003
Push 36199 by aciure@mozilla.com at Tue, 25 Jun 2019 15:52:35 +0000
Bug 1538015 (part 2) - restrict when incoming synced prefs are applied. r=tcsc,pauljt,Gijs Specifically, a "control pref" for a pref must already exist locally, or a new preference, `services.sync.prefs.dangerously_allow_arbitrary` must be set to true. This also removes a few preferences from the set we sync by default based due to potential harm which can be caused syncing inappropriate values. Differential Revision: https://phabricator.services.mozilla.com/D29775
643214222e38498bbd795d70890f0e6b9ac581b0: Bug 1538015 (part 1) - test only change to tighten up the checks being made. r=tcsc
Mark Hammond <mhammond@skippinet.com.au> - Tue, 25 Jun 2019 04:40:41 +0000 - rev 480002
Push 36199 by aciure@mozilla.com at Tue, 25 Jun 2019 15:52:35 +0000
Bug 1538015 (part 1) - test only change to tighten up the checks being made. r=tcsc This is a test-only change to make the existing synced prefs tests more explicit about values being checked and moves a couple of prefs around to make things a bit clearer, which should make the test changes in part 2 clearer. Differential Revision: https://phabricator.services.mozilla.com/D29774
006da247f592a392bdaeb128fc956e070c344c29: Bug 1550967 - ensure sync's username pref is set whenever FxA has a user. r=tcsc
Mark Hammond <mhammond@skippinet.com.au> - Thu, 13 Jun 2019 01:32:07 +0000 - rev 478583
Push 36146 by opoprus@mozilla.com at Thu, 13 Jun 2019 09:54:24 +0000
Bug 1550967 - ensure sync's username pref is set whenever FxA has a user. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D34309
b071db6bea7a03f23852097adbac201032005fea: Bug 1148205 - Replace misnamed `formSubmitURL` and `hostname` properties on nsILoginInfo in services/sync/ r=markh,tcsc
Matthew Noorenberghe <mozilla@noorenberghe.ca> - Wed, 05 Jun 2019 03:59:46 +0000 - rev 476925
Push 36112 by malexandru@mozilla.com at Wed, 05 Jun 2019 15:52:48 +0000
Bug 1148205 - Replace misnamed `formSubmitURL` and `hostname` properties on nsILoginInfo in services/sync/ r=markh,tcsc Differential Revision: https://phabricator.services.mozilla.com/D33347
246b4a16ab9610d0a91d4e5270b01537c7efc792: Bug 1552621 - Include optional steps in Sync engine telemetry. r=tcsc,tdsmith
Lina Cambridge <lina@yakshaving.ninja> - Tue, 04 Jun 2019 20:08:07 +0000 - rev 476893
Push 36110 by malexandru@mozilla.com at Wed, 05 Jun 2019 09:49:10 +0000
Bug 1552621 - Include optional steps in Sync engine telemetry. r=tcsc,tdsmith Before this commit, we used event telemetry to record timing and counts for the different steps of a bookmark merge (fetching the local tree, new local contents, remote tree, and new remote contents; merging; applying; fetching outgoing records; and notifying observers). This has several limitations. We need to store all numbers as strings, include a "flow ID" to tag events from the same merge, and collect failure reasons twice. We also can't correlate these events to the existing engine telemetry, meaning we can't see other stats for that engine, or for the entire sync. Finally, we need to run separate queries on these events for analysis, instead of extending our existing engine dashboards. This approach also feels like an abuse of event telemetry, so this commit adds a "steps" field for each engine in the Sync ping. Each step has a name, time taken, and additional named counts, like the number of items in the tree, or merged structure stats. Currently, only the `buffered-bookmarks` engine records these steps. Differential Revision: https://phabricator.services.mozilla.com/D33411
22fa4447a9a2f2fe231fdb35597ba3e021646968: Bug 1552621 - Record bookmark validation telemetry for the buffered engine. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Tue, 04 Jun 2019 20:08:51 +0000 - rev 476892
Push 36110 by malexandru@mozilla.com at Wed, 05 Jun 2019 09:49:10 +0000
Bug 1552621 - Record bookmark validation telemetry for the buffered engine. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D33410
7a67c62d4b8b1a36c98b98a0d8c6cdeff425160a: Bug 1552621 - Record shutdown blocker progress in the bookmarks mirror. r=markh,tcsc
Lina Cambridge <lina@yakshaving.ninja> - Mon, 03 Jun 2019 23:04:37 +0000 - rev 476891
Push 36110 by malexandru@mozilla.com at Wed, 05 Jun 2019 09:49:10 +0000
Bug 1552621 - Record shutdown blocker progress in the bookmarks mirror. r=markh,tcsc This commit introduces a `mozISyncedBookmarksMirrorProgressListener` interface for capturing telemetry and updating shutdown blocker state after each step of the merge, instead of waiting until the end. This also means we can also record events for interrupted and failed merges, and pass validation data through to the Sync ping. Shutdown hang crash reports now have a `steps` field, indicating the sequence of completed steps and when they were recorded. If the last step in the hang report is `fetchLocalTree`, we know the merger is blocked on `fetchNewLocalContents`. If the last step is `fetchNewLocalContents`, the merger is stuck at `fetchRemoteTree`, since that's the next step after `fetchNewLocalContents`. This commit also implements `Driver::record_telemetry_event` to dispatch progress callback runnables to the main thread. Differential Revision: https://phabricator.services.mozilla.com/D31950
3fae03e3595a90150c92e848ad53bf17f6ed493d: Bug 1551062 - Abort merging when the synced bookmarks mirror is finalized. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Tue, 14 May 2019 03:40:30 +0000 - rev 473735
Push 36013 by csabou@mozilla.com at Tue, 14 May 2019 16:01:08 +0000
Bug 1551062 - Abort merging when the synced bookmarks mirror is finalized. r=tcsc This commit adds an `AbortController` to the bookmark merger that aborts fetching and merging when the mirror is finalized on shutdown. Differential Revision: https://phabricator.services.mozilla.com/D31000
e391c48bc166bf4cba9dafe7b5c1d1310444269f: Bug 1548884 - Enable the synced bookmarks mirror on Nightly and Beta. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Mon, 06 May 2019 20:40:20 +0000 - rev 472782
Push 35978 by shindli@mozilla.com at Tue, 07 May 2019 09:44:39 +0000
Bug 1548884 - Enable the synced bookmarks mirror on Nightly and Beta. r=tcsc The number of Sync users on these channels is low compared to Release, so we can do this without a gradual rollout. This also lets more users test the new bookmark sync engine without manually flipping the pref. Differential Revision: https://phabricator.services.mozilla.com/D29859
76e8b769a7c00797dcaeef19cbaaa564f1f373b6: Bug 1546035 - Remove local and remote livemarks when syncing. r=mak,tcsc
Lina Cambridge <lina@yakshaving.ninja> - Thu, 02 May 2019 08:03:36 +0000 - rev 472337
Push 35954 by rgurzau@mozilla.com at Fri, 03 May 2019 04:14:31 +0000
Bug 1546035 - Remove local and remote livemarks when syncing. r=mak,tcsc This commit exports livemarks before syncing for the first time, to avoid losing livemarks that Sync may have resurrected. As of v0.2.4, Dogear treats livemarks as non-syncable, and deletes them on both sides. This also bumps the mirror schema version, to trigger a first sync. Differential Revision: https://phabricator.services.mozilla.com/D28543
52c866bc91aa95ee7b416a8a77185edfff0e84a8: Bug 1536170 - Replace all usage of Async.yieldingIterator with Async.yieldingForEach r=tcsc
Barret Rennie <barret@brennie.ca> - Mon, 15 Apr 2019 19:26:18 +0000 - rev 469930
Push 35884 by apavel@mozilla.com at Thu, 18 Apr 2019 21:35:00 +0000
Bug 1536170 - Replace all usage of Async.yieldingIterator with Async.yieldingForEach r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D26593
2b4f6184e971ee9be6367e5ad9c5d6784e98f857: Bug 1536170 - Add unit tests for Async.yieldingForEach() r=tcsc
Barret Rennie <barret@brennie.ca> - Mon, 15 Apr 2019 19:26:16 +0000 - rev 469929
Push 35884 by apavel@mozilla.com at Thu, 18 Apr 2019 21:35:00 +0000
Bug 1536170 - Add unit tests for Async.yieldingForEach() r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D26592
f33bfaf16d975de81421d687fd519d0fa56e10d6: Bug 1536170 - Replace Async.jankYielder r=tcsc,markh,eoger
Barret Rennie <barret@brennie.ca> - Wed, 17 Apr 2019 03:00:35 +0000 - rev 469928
Push 35884 by apavel@mozilla.com at Thu, 18 Apr 2019 21:35:00 +0000
Bug 1536170 - Replace Async.jankYielder r=tcsc,markh,eoger `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
e41b319d724345dbc5313d145d29b717ce6fdd8c: Bug 1536170 - Replace all usage of Async.yieldingIterator with Async.yieldingForEach r=tcsc
Barret Rennie <barret@brennie.ca> - Fri, 12 Apr 2019 19:07:26 +0000 - rev 469341
Push 35865 by apavel@mozilla.com at Sat, 13 Apr 2019 21:44:49 +0000
Bug 1536170 - Replace all usage of Async.yieldingIterator with Async.yieldingForEach r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D26593
0d8c58e90773ced99afad4c4f055f494745c7420: Bug 1536170 - Add unit tests for Async.yieldingForEach() r=tcsc
Barret Rennie <barret@brennie.ca> - Fri, 12 Apr 2019 19:07:08 +0000 - rev 469340
Push 35865 by apavel@mozilla.com at Sat, 13 Apr 2019 21:44:49 +0000
Bug 1536170 - Add unit tests for Async.yieldingForEach() r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D26592
19c23f03b47178f8071769ebc564d8076d076f5c: Bug 1536170 - Replace Async.jankYielder r=tcsc,markh,eoger
Barret Rennie <barret@brennie.ca> - Fri, 12 Apr 2019 19:07:00 +0000 - rev 469339
Push 35865 by apavel@mozilla.com at Sat, 13 Apr 2019 21:44:49 +0000
Bug 1536170 - Replace Async.jankYielder r=tcsc,markh,eoger `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
57c26f8e0bf7ab4e1d23bdbf68ed91c0bd925204: Bug 1536170 - Replace all usage of Async.yieldingIterator with Async.yieldingForEach r=tcsc
Barret Rennie <barret@brennie.ca> - Thu, 11 Apr 2019 18:40:02 +0000 - rev 469068
Push 35856 by csabou@mozilla.com at Fri, 12 Apr 2019 03:19:48 +0000
Bug 1536170 - Replace all usage of Async.yieldingIterator with Async.yieldingForEach r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D26593
ccea2e827d9dff136b8f6ac9b357e3fabb5e3ec7: Bug 1536170 - Add unit tests for Async.yieldingForEach() r=tcsc
Barret Rennie <barret@brennie.ca> - Thu, 11 Apr 2019 18:39:54 +0000 - rev 469067
Push 35856 by csabou@mozilla.com at Fri, 12 Apr 2019 03:19:48 +0000
Bug 1536170 - Add unit tests for Async.yieldingForEach() r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D26592
51a67bffd7d2670d12d87058973bc01e64f10096: Bug 1536170 - Replace Async.jankYielder r=tcsc,markh,eoger
Barret Rennie <barret@brennie.ca> - Thu, 11 Apr 2019 18:39:43 +0000 - rev 469066
Push 35856 by csabou@mozilla.com at Fri, 12 Apr 2019 03:19:48 +0000
Bug 1536170 - Replace Async.jankYielder r=tcsc,markh,eoger `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
39c9c1e5dd5718920508b5003f4e242e50536238: Bug 1540894 - Store diverging structure in the bookmarks mirror. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Fri, 05 Apr 2019 20:44:43 +0000 - rev 468240
Push 35824 by apavel@mozilla.com at Sat, 06 Apr 2019 10:57:50 +0000
Bug 1540894 - Store diverging structure in the bookmarks mirror. r=tcsc This commit: * Uses chunking to insert child GUIDs in `storeRemoteFolder`. * Changes the mirror schema to store diverging structure, so that it can be passed to Dogear. * Sorts remote items by GUID, so that diverging ones can be reparented in a deterministic order. * Measures and logs the time taken to run the Rust merger. * Adds tests for multiple parents and replacing invalid remote items. * Fixes two tests in `test_bookmark_structure_changes` to ensure the remote structure is consistent. Differential Revision: https://phabricator.services.mozilla.com/D26275
eea220d8fd4c656997171fd24f9d29b4988aeb6a: Bug 1540894 - Vendor Dogear v0.2.3. r=tcsc
Lina Cambridge <lina@yakshaving.ninja> - Fri, 05 Apr 2019 20:44:18 +0000 - rev 468239
Push 35824 by apavel@mozilla.com at Sat, 06 Apr 2019 10:57:50 +0000
Bug 1540894 - Vendor Dogear v0.2.3. r=tcsc Differential Revision: https://phabricator.services.mozilla.com/D26274
b052410b667385a66f5b9916b1e91bef80f8fc09: Bug 1539697 - Report more detailed errors in the mozStorage Rust binding. r=mak,tcsc
Lina Cambridge <lina@yakshaving.ninja> - Tue, 02 Apr 2019 16:56:41 +0000 - rev 467646
Push 35806 by rgurzau@mozilla.com at Wed, 03 Apr 2019 04:07:39 +0000
Bug 1539697 - Report more detailed errors in the mozStorage Rust binding. r=mak,tcsc The `nsresult` codes that mozStorage returns are often too generic. For example, `NS_ERROR_FAILURE` might be anything from a SQL syntax error to an invalid column name in a trigger. This commit adds a `Conn::call_and_wrap_error` helper that checks the last SQLite error, and returns that instead of `nsresult`. Not all errors are SQLite errors, however, so we only use this for mozStorage methods that return `convertResultCode`. Differential Revision: https://phabricator.services.mozilla.com/D25179
e7282f4449c83d2657edc29f8131b8b4985ab2ef: Bug 1482608 - Fix up inconsistent bookmarks at sync time. r=markh,tcsc
Lina Cambridge <lina@yakshaving.ninja> - Mon, 25 Mar 2019 04:50:38 +0000 - rev 465876
Push 35752 by opoprus@mozilla.com at Mon, 25 Mar 2019 09:51:53 +0000
Bug 1482608 - Fix up inconsistent bookmarks at sync time. r=markh,tcsc This commit changes the mirror to store divergent structure, instead of dropping or trying to fix up records as they're stored. * We no longer ignore records for items with invalid GUIDs. Instead, we store them in the mirror, and make new GUIDs for them. Dogear takes care of marking the old GUID as deleted, and flagging the item and its parent for reupload. * Each item stores its `parentid` in the database, so we can fix up orphans and parent-child disagreements. * Each item also stores a new validity state: valid, reupload, or replace. An item marked with "reupload" can be applied, but should be updated remotely. We use this to rewrite legacy tag queries. An item marked with "replace" can't be applied; for example, a bookmark or query without a valid URL. If the item exists locally, we can replace the server's invalid copy with a valid local copy. If not, we must delete it from the server. * We don't need to protect the mirror's roots, since Dogear fixes them for us. Differential Revision: https://phabricator.services.mozilla.com/D20077
4782957f96a4d958880e7c177a8ed42d8caab7cf: Bug 1482608 - Port the synced bookmarks merger to Rust. r=nika,mak,markh,tcsc
Lina Cambridge <lina@yakshaving.ninja> - Mon, 25 Mar 2019 04:50:14 +0000 - rev 465875
Push 35752 by opoprus@mozilla.com at Mon, 25 Mar 2019 09:51:53 +0000
Bug 1482608 - Port the synced bookmarks merger to Rust. r=nika,mak,markh,tcsc This commit introduces a Rust XPCOM component, `mozISyncedBookmarksMerger`, that wraps the Dogear crate for merging and applying synced bookmarks. How this works: `SyncedBookmarksMirror.jsm` manages opening the connection, initializing the schema, and writing incoming items into the mirror database. The new `mozISyncedBookmarksMerger` holds a handle to the same connection. When JS code calls `mozISyncedBookmarksMerger::apply`, the merger builds local and remote trees, produces a merged tree, applies the tree back to Places, and stages outgoing items for upload in a temp table, all on the storage thread. It then calls back in to JS, which inflates Sync records for outgoing items, notifies Places observers, and cleans up. Since Dogear has a more robust merging algorithm that attempts to fix up invalid trees, `test_bookmark_corruption.js` intentionally fails. This is fixed in the next commit, which changes the merger to handle invalid structure. Differential Revision: https://phabricator.services.mozilla.com/D20076