You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hit this on main (release build). The machine I built on does have a bunch of old extensions; however, we shouldn't hang for whatever reason on launch.
The text was updated successfully, but these errors were encountered:
Closes#370
The DevHome code was great for "I need something that can lookup extensions and enumerate all of them".
However, the DevHome code is a very blunt hammer when it comes to extensions. The only thing it tracks is "packages changed", and if it gets one of those, it just blows away all the extensions and rebuilds them. Yikes.
This PR changes `ExtensionService` to be a scalpel. We'll keep `_installedExtensions` fresh. When we get a package install, we'll add only that package's extension to our cache, and let the `TopLevelCommandManager` know. Similarly for updates and uninstalls.
That way, we can exactly change the top-level list as needed, rather than bluntly forcing all the extensions to reload.
In the middle of all this, I fixed a bug where uninstalling an extension, then reloading would just fail to load extensions. This is because the old code would clear out the **whole** list of extensions when _one_ was uninstalled. That created a race where we'd be parsing the new list of all the extensions (from the reload), get an uninstall event, clear the list, then InvalidOperation as the list of extensions was modified during enumeration.
There's a bunch more locking in here. This might drive-by #324 but hard to be sure.
Related to #89
Hit this on main (release build). The machine I built on does have a bunch of old extensions; however, we shouldn't hang for whatever reason on launch.
The text was updated successfully, but these errors were encountered: