Don't invalidate the startup cache when webextensions are installed/uninstalled

RESOLVED FIXED in Firefox 67

Status

()

enhancement
P2
normal
RESOLVED FIXED
a year ago
22 days ago

People

(Reporter: aswan, Assigned: Gijs)

Tracking

unspecified
mozilla67
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox67 fixed)

Details

(Whiteboard: [fxperf:p1])

Attachments

(1 attachment)

Reporter

Description

a year ago
In the days of legacy extensions that could register chrome: and resource: scripts, we had to flush the startup cache every time an extension was uninstall (or updated) to purge any cached scripts from the old version.  No code from a pure webextension should end up in the startup cache so we can avoid an unnecessary (and potentitally expensive) flush when those are uninstalled.
Reporter

Updated

a year ago
Priority: -- → P2
Assignee

Updated

5 months ago
Duplicate of this bug: 1515488
Assignee

Comment 2

5 months ago
Kris and I talked about this today. I assume this would be straightforward to fix, and it should have positive real-world startup impact.
Whiteboard: [fxperf]
Reporter

Comment 3

5 months ago
At least formautofill still provides some chrome: and resource: assets:
https://searchfox.org/mozilla-central/rev/2e5e28f518524f8af5b158ddb605022b6a2d68cf/browser/extensions/formautofill/api.js#71-82

So it will need to flush in the case of a hot-update.  In practice, I don't think we've ever shipped an out-of-cycle update to formautofill but it would be good to avoid leaving this as a trap in the event that we ever want to ship one...
We never planned to support hot updates so that's why we implemented onUpdateAvailable: https://searchfox.org/mozilla-central/rev/2e5e28f518524f8af5b158ddb605022b6a2d68cf/browser/extensions/formautofill/background.js#5-8

Adding a comment there about the startup cache may be worthwhile.

This seems like a quick and cheap potential start-up win.

Whiteboard: [fxperf] → [fxperf:p1]
Assignee

Comment 7

4 months ago
Assignee

Updated

4 months ago
Assignee: nobody → gijskruitbosch+bugs
Status: NEW → ASSIGNED
Attachment #9040744 - Attachment description: Bug 1445739 - invalidate only the extensions cache when extensions change, r?aswan → Bug 1445739 - stop invalidating the startup cache when extensions change, r?kmag

Comment 8

4 months ago
Pushed by gijskruitbosch@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/41a84186eb77
stop invalidating the startup cache when extensions change, r=kmag

Backed out changeset 41a84186eb77 (Bug 1445739) for test_startup.js failures.

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception%2Cretry%2Cusercancel%2Crunning%2Cpending%2Crunnable&revision=41a84186eb775f3a0bfc20985617946e8183e649&selectedJob=226679959

Backout link: https://hg.mozilla.org/integration/autoland/rev/37d85347dd8c41f4e7ad33f89d611c6064f0ebed

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=226679959&repo=autoland&lineNumber=2254

[task 2019-02-07T01:07:37.447Z] 01:07:37 INFO - TEST-START | toolkit/components/url-classifier/tests/unit/test_listmanager.js
[task 2019-02-07T01:07:39.226Z] 01:07:39 INFO - TEST-PASS | toolkit/components/url-classifier/tests/unit/test_listmanager.js | took 1783ms
[task 2019-02-07T01:07:39.242Z] 01:07:39 INFO - TEST-START | toolkit/modules/subprocess/test/xpcshell/test_subprocess.js
[task 2019-02-07T01:07:47.247Z] 01:07:47 INFO - TEST-PASS | toolkit/modules/subprocess/test/xpcshell/test_subprocess.js | took 8004ms
[task 2019-02-07T01:07:47.251Z] 01:07:47 INFO - TEST-START | xpcshell.ini:toolkit/mozapps/extensions/test/xpcshell/test_startup.js
[task 2019-02-07T01:12:47.251Z] 01:12:47 WARNING - TEST-UNEXPECTED-TIMEOUT | xpcshell.ini:toolkit/mozapps/extensions/test/xpcshell/test_startup.js | Test timed out
[task 2019-02-07T01:12:47.253Z] 01:12:47 INFO - TEST-INFO took 300001ms
[task 2019-02-07T01:12:47.255Z] 01:12:47 INFO - >>>>>>>
[task 2019-02-07T01:12:47.256Z] 01:12:47 INFO - PID 15307 | [15307, Main Thread] WARNING: Couldn't get the user appdata directory. Crash events may not be produced.: file /builds/worker/workspace/build/src/toolkit/crashreporter/nsExceptionHandler.cpp, line 2536
[task 2019-02-07T01:12:47.258Z] 01:12:47 INFO - PID 15307 | JavaScript strict warning: resource://testing-common/AddonTestUtils.jsm, line 315: ReferenceError: reference to undefined property "testScope"
[task 2019-02-07T01:12:47.259Z] 01:12:47 INFO - "CONSOLE_MESSAGE: (warn) [JavaScript Warning: "ReferenceError: reference to undefined property "testScope"" {file: "resource://testing-common/AddonTestUtils.jsm" line: 315}]"
[task 2019-02-07T01:12:47.260Z] 01:12:47 INFO - (xpcshell/head.js) | test MAIN run_test pending (1)
[task 2019-02-07T01:12:47.261Z] 01:12:47 INFO - (xpcshell/head.js) | test run_next_test 0 pending (2)
[task 2019-02-07T01:12:47.262Z] 01:12:47 INFO - (xpcshell/head.js) | test MAIN run_test finished (2)
[task 2019-02-07T01:12:47.263Z] 01:12:47 INFO - running event loop
[task 2019-02-07T01:12:47.264Z] 01:12:47 INFO - xpcshell.ini:toolkit/mozapps/extensions/test/xpcshell/test_startup.js | Starting setup
[task 2019-02-07T01:12:47.265Z] 01:12:47 INFO - (xpcshell/head.js) | test setup pending (2)
[task 2019-02-07T01:12:47.265Z] 01:12:47 INFO - PID 15307 | 1549501667702 addons.manager DEBUG Application has been upgraded
[task 2019-02-07T01:12:47.266Z] 01:12:47 INFO - PID 15307 | 1549501667744 addons.manager DEBUG Loaded provider scope for resource://gre/modules/addons/XPIProvider.jsm: ["XPIProvider", "XPIInternal"]
[task 2019-02-07T01:12:47.267Z] 01:12:47 INFO - PID 15307 | 1549501667754 addons.manager DEBUG Loaded provider scope for resource://gre/modules/LightweightThemeManager.jsm: ["LightweightThemeManager"]
[task 2019-02-07T01:12:47.268Z] 01:12:47 INFO - PID 15307 | 1549501667767 addons.manager DEBUG Loaded provider scope for resource://gre/modules/addons/GMPProvider.jsm
[task 2019-02-07T01:12:47.269Z] 01:12:47 INFO - PID 15307 | 1549501667772 addons.manager DEBUG Loaded provider scope for resource://gre/modules/addons/PluginProvider.jsm
[task 2019-02-07T01:12:47.270Z] 01:12:47 INFO - PID 15307 | 1549501667774 addons.manager DEBUG Starting provider: XPIProvider
[task 2019-02-07T01:12:47.271Z] 01:12:47 INFO - PID 15307 | 1549501667775 addons.xpi DEBUG startup
[task 2019-02-07T01:12:47.272Z] 01:12:47 INFO - PID 15307 | 1549501667776 addons.xpi WARN List of valid built-in add-ons could not be parsed.: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXPCComponents_Utils.readUTF8URI]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: resource://gre/modules/addons/XPIProvider.jsm :: startup :: line 2202" data: no] Stack trace: startup()@resource://gre/modules/addons/XPIProvider.jsm:2202
[task 2019-02-07T01:12:47.273Z] 01:12:47 INFO - PID 15307 | callProvider()@resource://gre/modules/AddonManager.jsm:204
[task 2019-02-07T01:12:47.274Z] 01:12:47 INFO - PID 15307 | _startProvider()@resource://gre/modules/AddonManager.jsm:653
[task 2019-02-07T01:12:47.274Z] 01:12:47 INFO - PID 15307 | startup()@resource://gre/modules/AddonManager.jsm:806
[task 2019-02-07T01:12:47.275Z] 01:12:47 INFO - PID 15307 | startup()@resource://gre/modules/AddonManager.jsm:2788
[task 2019-02-07T01:12:47.276Z] 01:12:47 INFO - PID 15307 | observe()@jar:file:///builds/worker/workspace/build/application/firefox/omni.ja!/components/addonManager.js:66
[task 2019-02-07T01:12:47.277Z] 01:12:47 INFO - PID 15307 | promiseStartupManager()@resource://testing-common/AddonTestUtils.jsm:780

Flags: needinfo?(gijskruitbosch+bugs)
Assignee

Comment 10

3 months ago

The test_startup.js stuff is trivial, it's the android failures that I don't understand...

Assignee

Updated

3 months ago
See Also: → 1526086
Assignee

Comment 11

3 months ago

Thanks to kmag for pointing out that android seems to be stuck trying to write the startupcache now that we're not invalidating it all the time. I filed bug 1526086 about that.

Hopefully this is sufficient to fix:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=0a379babee60699e744b39251e72095c96cb8178

Comment 12

3 months ago
Pushed by gijskruitbosch@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/fd700b0b82a6
stop invalidating the startup cache when extensions change, r=kmag

Comment 13

3 months ago
bugherder
Status: ASSIGNED → RESOLVED
Last Resolved: 3 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla67
Assignee

Updated

3 months ago
Flags: needinfo?(gijskruitbosch+bugs)
You need to log in before you can comment on or make changes to this bug.