-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[kbn/optimizer] implement "requiredBundles" property of KP plugins #70911
[kbn/optimizer] implement "requiredBundles" property of KP plugins #70911
Conversation
5ed29a7
to
f956f08
Compare
…gins-declare-required-bundles
FYI - this PR for Security (Endpoint) is dependent on this change - #71198 |
…gins-declare-required-bundles
Pinging @elastic/kibana-operations (Team:Operations) |
Co-authored-by: Josh Dover <[email protected]>
@elasticmachine merge upstream |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
APM change looks good.
@elasticmachine merge upstream |
…gins-declare-required-bundles
…om:spalger/kibana into implement/plugins-declare-required-bundles
💚 Build SucceededBuild metrics
History
To update your PR or re-run it, just comment with: |
…lastic#70911) Co-authored-by: Josh Dover <[email protected]> Co-authored-by: spalger <[email protected]> Co-authored-by: Elastic Machine <[email protected]> # Conflicts: # packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap # src/plugins/embeddable/kibana.json # src/plugins/telemetry/kibana.json # src/plugins/ui_actions/kibana.json # x-pack/plugins/apm/kibana.json # x-pack/plugins/upgrade_assistant/kibana.json
…11y-overlay * 'master' of github.com:elastic/kibana: (33 commits) address index templates feedback (elastic#71353) Upgrade EUI to v26.3.1 (elastic#70243) [build] Creates Linux aarch64 archive (elastic#69165) [SIEM][Detection Engine] Fixes skipped tests (elastic#71347) [SIEM][Detection Engine][Lists] Adds read_privileges route for lists and list items [kbn/optimizer] implement "requiredBundles" property of KP plugins (elastic#70911) [Security Solution][Exceptions] - Exceptions modal pt 2 (elastic#70886) [ML] DF Analytics: stop status polling when job stopped (elastic#71159) [SIEM][CASE] IBM Resilient Connector (elastic#66385) jenkins_xpack_saved_objects_field_metrics.sh expects to be run from the KIBANA_DIR in CI Deduplication of entries and items before sending to endpoint (elastic#71297) [services/remote/webdriver] fix eslint error (elastic#71346) send slack notifications on visual baseline failures fix visual regression job (elastic#70999) [Ingest Manager] Add schema to usageCollector. (elastic#71219) [ftr] use typed chromeOptions object, adding TEST_BROWSER_BINARY_PATH (elastic#71279) [Ingest Manager] Fix limited packages incorrect response (elastic#71292) Support multiple features declaring same properties (elastic#71106) [Security_Solution][Resolver]Add beta badge to Resolver panel (elastic#71183) [DOCS] Clarify trial subscription levels (elastic#70636) ...
…ins (#70911) (#71355) Co-authored-by: Josh Dover <[email protected]> Co-authored-by: spalger <[email protected]> Co-authored-by: Elastic Machine <[email protected]> # Conflicts: # packages/kbn-optimizer/src/integration_tests/__snapshots__/basic_optimization.test.ts.snap # src/plugins/embeddable/kibana.json # src/plugins/telemetry/kibana.json # src/plugins/ui_actions/kibana.json # x-pack/plugins/apm/kibana.json # x-pack/plugins/upgrade_assistant/kibana.json
* master: (78 commits) Bump lodash package version (elastic#71392) refactor: 💡 use allow-list in AppArch codebase (elastic#71400) improve bugfix 7198 test stability (elastic#71250) [Security Solution][Ingest Manager][Endpoint] Optional ingest manager (elastic#71198) [Metrics UI] Round metric threshold time buckets to nearest unit (elastic#71172) [Security Solution][Endpoint] Policy creation callback fixes + Improved error handling in user manifest loop (elastic#71269) [Security Solution] Allow to configure Event Renderers settings (elastic#69693) Fix a11y keyboard overlay (elastic#71214) [APM] UI text updates (elastic#71333) [Logs UI] Limit `extendDatemath` to valid ranges (elastic#71113) [SIEM] fix tooltip of notes (elastic#71342) address index templates feedback (elastic#71353) Upgrade EUI to v26.3.1 (elastic#70243) [build] Creates Linux aarch64 archive (elastic#69165) [SIEM][Detection Engine] Fixes skipped tests (elastic#71347) [SIEM][Detection Engine][Lists] Adds read_privileges route for lists and list items [kbn/optimizer] implement "requiredBundles" property of KP plugins (elastic#70911) [Security Solution][Exceptions] - Exceptions modal pt 2 (elastic#70886) [ML] DF Analytics: stop status polling when job stopped (elastic#71159) [SIEM][CASE] IBM Resilient Connector (elastic#66385) ...
@spalger do you mind explaining the difference between |
@sebelga it is, the difference is that |
Plugin teams who were pinged for review
This change triggers a ton of review because it changes a lot of kibana.json files. These changes are validated at build time by the
@kbn/optimizer
and I've talked to @kobelb and we've agreed that we're going to merge this even if we don't get review from all the plugins. I encourage you to see and understand the change described here as it will impact your plugin during development, but please don't feel like you need to schedule review unless you're on the @elastic/kibana-platform or @elastic/kibana-operations team.Closes #69458
This PR requires that plugin define the bundles which they import from, so that when the bundle for that plugin is loaded we can be certain that the imported-from bundles are loaded even when those plugins are disabled.
When a plugin tries to import from another bundle but the bundle is not mentioned in the
kibana.json
file the following error will be logged:When users fix this problem while running
@kbn/optimizer
in--watch
mode (or just usingyarn start
), webpack will notice the change to the kibana.json and rebuild, adapting to changes in kibana.json at runtime without needing to restart the optimizer.Similarly, when
requiredBundles
has an extra plugin listed another error will be logged and again the error can be cleared by fixing the kibana.json file.Finally, in order to make sure that the
kibana.json
file is tracked by webpack when it watches files for changes learned aboutcompilation.fileDependencies
. This is an array of every file path that webpack interacted with while creating the build, including files that don't make it into the final bundle or impact the output of the bundle. This list is useful for measuring how many files each bundle forces webpack to consult, which was originally the intention behind themoduleCount
metric. The size of this list, plus a static value of100
for each.scss
module created, are used to create a newworkUnits
value that is tracked by the optimizer. Using this metric to allocate bundles to workers rather thanmoduleCount
makes@kbn/optimizer
marginally more efficient on systems with lots of CPU cores.We still track the
moduleCount
for reporting purposes as it's still a very useful metric for identifying surprisingly heavy imports and other unexpected side-effects of changing imports in public bundles.