Skip to content

Commit

Permalink
[7.10] [kbn/optimizer] bump low or add missing limits when updating a…
Browse files Browse the repository at this point in the history
…utomatically (#80013) (#80044)

Co-authored-by: spalger <spalger@users.noreply.github.com>
# Conflicts:
#	packages/kbn-optimizer/limits.yml
  • Loading branch information
Spencer committed Oct 8, 2020
1 parent 37135a5 commit 0aa8911
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 110 deletions.
198 changes: 99 additions & 99 deletions packages/kbn-optimizer/limits.yml
Original file line number Diff line number Diff line change
@@ -1,100 +1,100 @@
pageLoadAssetSize:
advancedSettings: 27_596
alerts: 106_936
apm: 64_385
apmOss: 18_996
beatsManagement: 188_135
bfetch: 41_874
canvas: 1_065_624
charts: 159_211
cloud: 21_076
console: 46_235
core: 692_646
crossClusterReplication: 65_408
dashboard: 374_267
dashboardEnhanced: 65_646
dashboardMode: 22_716
data: 1_174_083
dataEnhanced: 50_420
devTools: 38_781
discover: 105_147
discoverEnhanced: 42_730
embeddable: 242_671
embeddableEnhanced: 41_145
enterpriseSearch: 35_741
esUiShared: 326_798
expressions: 224_120
features: 31_211
fileUpload: 24_717
globalSearch: 43_548
globalSearchBar: 62_888
globalSearchProviders: 25_554
graph: 31_504
grokdebugger: 26_779
home: 41_661
indexLifecycleManagement: 107_090
indexManagement: 662_506
indexPatternManagement: 154_366
infra: 197_873
ingestManager: 415_829
ingestPipelines: 58_003
inputControlVis: 172_819
inspector: 148_999
kibanaLegacy: 107_855
kibanaOverview: 56_426
kibanaReact: 162_353
kibanaUtils: 198_829
lens: 96_624
licenseManagement: 41_961
licensing: 39_008
lists: 183_665
logstash: 53_548
management: 46_112
maps: 183_754
mapsLegacy: 116_961
mapsLegacyLicensing: 20_214
ml: 82_187
monitoring: 268_758
navigation: 37_413
newsfeed: 42_228
observability: 89_709
painlessLab: 179_892
regionMap: 66_098
remoteClusters: 51_327
reporting: 183_418
rollup: 97_204
savedObjects: 108_662
savedObjectsManagement: 100_503
searchprofiler: 67_224
security: 189_428
securityOss: 30_806
securitySolution: 622_387
share: 99_205
snapshotRestore: 79_176
spaces: 389_643
telemetry: 91_832
telemetryManagementSection: 52_443
tileMap: 65_337
timelion: 29_920
transform: 41_151
triggersActionsUi: 170_145
uiActions: 95_074
uiActionsEnhanced: 349_799
upgradeAssistant: 80_967
uptime: 40_825
urlDrilldown: 34_174
urlForwarding: 32_579
usageCollection: 39_762
visDefaultEditor: 50_178
visTypeMarkdown: 30_896
visTypeMetric: 42_790
visTypeTable: 95_078
visTypeTagcloud: 37_575
visTypeTimelion: 51_933
visTypeTimeseries: 155_347
visTypeVega: 153_861
visTypeVislib: 242_982
visTypeXy: 20_255
visualizations: 295_169
visualize: 57_433
watcher: 43_742
advancedSettings: 27596
alerts: 106936
apm: 64385
apmOss: 18996
beatsManagement: 188135
bfetch: 41874
canvas: 1065624
charts: 159211
cloud: 21076
console: 46235
core: 692646
crossClusterReplication: 65408
dashboard: 374267
dashboardEnhanced: 65646
dashboardMode: 22716
data: 1174083
dataEnhanced: 50420
devTools: 38781
discover: 105147
discoverEnhanced: 42730
embeddable: 242671
embeddableEnhanced: 41145
enterpriseSearch: 35741
esUiShared: 326798
expressions: 224120
features: 31211
fileUpload: 24717
globalSearch: 43548
globalSearchBar: 62888
globalSearchProviders: 25554
graph: 31504
grokdebugger: 26779
home: 41661
indexLifecycleManagement: 107090
indexManagement: 662506
indexPatternManagement: 154366
infra: 197873
ingestManager: 415829
ingestPipelines: 58003
inputControlVis: 172819
inspector: 148999
kibanaLegacy: 107855
kibanaOverview: 56426
kibanaReact: 162353
kibanaUtils: 198829
lens: 96624
licenseManagement: 41961
licensing: 39008
lists: 183665
logstash: 53548
management: 46112
maps: 183754
mapsLegacy: 116961
mapsLegacyLicensing: 20214
ml: 82187
monitoring: 268758
navigation: 37413
newsfeed: 42228
observability: 89709
painlessLab: 179892
regionMap: 66098
remoteClusters: 51327
reporting: 183418
rollup: 97204
savedObjects: 108662
savedObjectsManagement: 100503
searchprofiler: 67224
security: 189428
securityOss: 30806
securitySolution: 622387
share: 99205
snapshotRestore: 79176
spaces: 389643
telemetry: 91832
telemetryManagementSection: 52443
tileMap: 65337
timelion: 29920
transform: 41151
triggersActionsUi: 170145
uiActions: 95074
uiActionsEnhanced: 349799
upgradeAssistant: 80967
uptime: 40825
urlDrilldown: 34174
urlForwarding: 32579
usageCollection: 39762
visDefaultEditor: 50178
visTypeMarkdown: 30896
visTypeMetric: 42790
visTypeTable: 95078
visTypeTagcloud: 37575
visTypeTimelion: 51933
visTypeTimeseries: 155347
visTypeVega: 153861
visTypeVislib: 242982
visTypeXy: 20255
visualizations: 295169
visualize: 57433
watcher: 43742
38 changes: 29 additions & 9 deletions packages/kbn-optimizer/src/limits.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,28 @@ import dedent from 'dedent';
import Yaml from 'js-yaml';
import { createFailError, ToolingLog } from '@kbn/dev-utils';

import { OptimizerConfig, getMetrics } from './optimizer';
import { OptimizerConfig, getMetrics, Limits } from './optimizer';

const LIMITS_PATH = require.resolve('../limits.yml');
const DEFAULT_BUDGET = 15000;

const diff = <T>(a: T[], b: T[]): T[] => a.filter((item) => !b.includes(item));

export function readLimits() {
return Yaml.safeLoad(Fs.readFileSync(LIMITS_PATH, 'utf8'));
export function readLimits(): Limits {
let yaml;
try {
yaml = Fs.readFileSync(LIMITS_PATH, 'utf8');
} catch (error) {
if (error.code !== 'ENOENT') {
throw error;
}
}

return yaml ? Yaml.safeLoad(yaml) : {};
}

export function validateLimitsForAllBundles(log: ToolingLog, config: OptimizerConfig) {
const limitBundleIds = Object.keys(config.limits.pageLoadAssetSize);
const limitBundleIds = Object.keys(config.limits.pageLoadAssetSize || {});
const configBundleIds = config.bundles.map((b) => b.id);

const missingBundleIds = diff(configBundleIds, limitBundleIds);
Expand All @@ -56,7 +65,11 @@ export function validateLimitsForAllBundles(log: ToolingLog, config: OptimizerCo
${issues.join('\n ')}
To validate your changes locally, run:
To automatically update the limits file locally run:
node scripts/build_kibana_platform_plugins.js --update-limits
To validate your changes locally run:
node scripts/build_kibana_platform_plugins.js --validate-limits
` + '\n'
Expand All @@ -69,15 +82,22 @@ export function validateLimitsForAllBundles(log: ToolingLog, config: OptimizerCo
export function updateBundleLimits(log: ToolingLog, config: OptimizerConfig) {
const metrics = getMetrics(log, config);

const number = (input: number) => input.toLocaleString('en').split(',').join('_');
const pageLoadAssetSize: NonNullable<Limits['pageLoadAssetSize']> = {};

let yaml = `pageLoadAssetSize:\n`;
for (const metric of metrics.sort((a, b) => a.id.localeCompare(b.id))) {
if (metric.group === 'page load bundle size') {
yaml += ` ${metric.id}: ${number(metric.value + DEFAULT_BUDGET)}\n`;
const existingLimit = config.limits.pageLoadAssetSize?.[metric.id];
pageLoadAssetSize[metric.id] =
existingLimit != null && existingLimit >= metric.value
? existingLimit
: metric.value + DEFAULT_BUDGET;
}
}

Fs.writeFileSync(LIMITS_PATH, yaml);
const newLimits: Limits = {
pageLoadAssetSize,
};

Fs.writeFileSync(LIMITS_PATH, Yaml.safeDump(newLimits));
log.success(`wrote updated limits to ${LIMITS_PATH}`);
}
2 changes: 1 addition & 1 deletion packages/kbn-optimizer/src/optimizer/get_output_stats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ export function getMetrics(log: ToolingLog, config: OptimizerConfig) {
group: `page load bundle size`,
id: bundle.id,
value: entry.stats!.size,
limit: config.limits.pageLoadAssetSize[bundle.id],
limit: config.limits.pageLoadAssetSize?.[bundle.id],
limitConfigPath: `packages/kbn-optimizer/limits.yml`,
},
{
Expand Down
2 changes: 1 addition & 1 deletion packages/kbn-optimizer/src/optimizer/optimizer_config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import { filterById } from './filter_by_id';
import { readLimits } from '../limits';

export interface Limits {
pageLoadAssetSize: {
pageLoadAssetSize?: {
[id: string]: number | undefined;
};
}
Expand Down

0 comments on commit 0aa8911

Please sign in to comment.