The NOT IN guard against null final_entity rows was preventing the
query planner from using parallel workers and (with a future covering
index) index-only scans. Without the covering index it caused a 2.6x
regression on the no-filter path (7s -> 18.4s).
The filtered path already excludes unstitched entities via the
whereNotNull('final_entities.final_entity') in the inner
entityIdSubquery, so no guard is needed there.
The no-filter path now matches 1.49.x behavior. A followup migration
adding a covering index can re-introduce the guard efficiently.
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Backstage is a single-page application composed of a set of plugins. This folder holds numerous plugins that are managed by this repository. However, most plugins are in the community plugins repo - hop over there if you want to contribute!
For more information about the plugin ecosystem, see the documentation here:
You can also see the Plugin Marketplace for other open source plugins you can add to your Backstage instance.
Suggesting a plugin
If you start developing a plugin that you aim to release as open source, we suggest that you create a new Issue on the community plugins repo. This helps the community know what plugins are in development.
You can also use this process if you have an idea for a good plugin but you hope that someone else will pick up the work.