Bug 1952588 - Vendor application-services to 138 for Suggest geo expansion. r=bdk,daisuke
This vendors the `desktop-138` branch [1] of application-services. The `main` branch currently does not have some PRs that desktop needs because they break mobile, and we need this on desktop ASAP. This patch is larger than usual because the vendor includes some major changes to the application-services `suggest` component, including new and changed API. As a consequence this patch includes the following important changes: ## New `suggest` API & uniffi `SuggestStoreBuilder::remote_settings_service` and `RemoteSettingsService::new` are exposed to JS as synchronous functions. There's no need for them to be off-main-thread. ## Telemetry The labels of `suggest.ingest_time`, `ingest_download_time` and `query_time` had to be updated due to changes in the Rust component. These are minor updates that don't need a data review. ## Urlbar I had to make the following changes to urlbar. I tried to keep them to a minimum for now. There are opportunities for improvements in follow-ups. * Appropriate minimal integration changes to `SuggestBackendRust` for creating the `SuggestStore` and setting up the RS config * The Rust component uses new RS collections, which breaks tests. I tried to fix them without touching too many lines. There are definitely opportunities to improve these tests and test helpers that I'd like to come back to. * A fix to `RemoteSettingsServer` that's required due to the new RS client used by the Rust component ## Late writes due to the new RS client & `AsyncShutdown` This is a urlbar change but it's worth calling out separately. I pushed all these changes to tryserver, and there was a failure at the end of the browser Suggest tests due to `LateWriteObserver` [2]. The late write happens when the app exits: `SuggestStore` is dropped, which causes the new app-services RS client to drop its Sqlite connection, which causes Sqlite to sync the RS client's DB to disk. This hasn't been a problem before because `suggest` currently uses the old RS client, which doesn't keep a DB. (`suggest` does have its own separate Sqlite DB, and I didn't investigate why this isn't a problem for it, mainly because it makes sense that the new RS client would sync its DB when it's dropped and that might be considered a "late write" when it happens on app shutdown.) According to the stack in the log, `SuggestStore` is dropped by `nsCycleCollector`. I can't see how `SuggestBackendRust.#store` is involved in a cycle, and I don't know if something in this patch is causing a cycle where there wasn't one before. Maybe there always was. And I don't know if the cycle is what's causing the all this to happen too late on shutdown. Maybe it's unrelated. (I'll paste the stack in a Phabricator comment.) The `SuggestStore` is definitely kept alive until `AsyncShutdown.profileBeforeChange` since we have a barrier for that phase that calls `interrupt()` on it. Maybe that's simply the problem and we're using a phase that's too late in shutdown. But again I don't know why it wouldn't also be a problem for Suggest's own DB. The only fix I found is to replace `AsyncShutdown.profileBeforeChange` with either `quitApplicationGranted` or `profileChangeTeardown`, and then null out `#store` in the callback (after we call `interrupt()` on it). I assume that fixes it because `profileBeforeChange` runs later than those other two phases. So I replaced `profileBeforeChange` with `profileChangeTeardown`. I don't know which of `quitApplicationGranted` or `profileChangeTeardown` is better. I think it probably doesn't matter. I chose `profileChangeTeardown` because it's closer to `profileBeforeChange`. (The order is: `quitApplicationGranted`, `profileChangeTeardown`, `profileBeforeChange`.) [1] https://github.com/mozilla/application-services/tree/desktop-138 [2] https://treeherder.mozilla.org/jobs?repo=try&revision=1639f87aa46f1afaf50901d80c8282861700019b Differential Revision: https://phabricator.services.mozilla.com/D240919
This commit is contained in:
@@ -70,9 +70,9 @@ git = "https://github.com/jfkthame/mapped_hyph.git"
|
||||
rev = "eff105f6ad7ec9b79816cfc1985a28e5340ad14b"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."git+https://github.com/mozilla/application-services?rev=f7947a60b3e9957b97229d6dd08b458532e79c1c"]
|
||||
[source."git+https://github.com/mozilla/application-services?branch=desktop-138"]
|
||||
git = "https://github.com/mozilla/application-services"
|
||||
rev = "f7947a60b3e9957b97229d6dd08b458532e79c1c"
|
||||
branch = "desktop-138"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."git+https://github.com/mozilla/audioipc?rev=e6f44a2bd1e57d11dfc737632a9e849077632330"]
|
||||
|
||||
Reference in New Issue
Block a user