Skip to content
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

build immutable bundles for new platform plugins #53976

Merged
merged 134 commits into from
Feb 13, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
f4db1ad
build immutable bundles for new platform plugins
spalger Jan 25, 2020
be16d71
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Jan 25, 2020
53794ef
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Jan 25, 2020
0d99762
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Jan 26, 2020
bcf6159
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Jan 27, 2020
24ded26
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Jan 27, 2020
da80e54
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Jan 27, 2020
ac62e68
only inspect workers if configured to do so
spalger Jan 27, 2020
2112fb1
[navigation] use an index.scss file
spalger Jan 27, 2020
3810326
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 27, 2020
2b3a2a0
add yarn.lock symlink
spalger Jan 28, 2020
f624d8e
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 28, 2020
13d700b
set pluginScanDirs in test so fixtures stay consistent
spalger Jan 28, 2020
ebcae45
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 28, 2020
edc362a
cleanup helpers a little
spalger Jan 28, 2020
42a2640
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 28, 2020
9089c20
fix type error
spalger Jan 28, 2020
7a85b6d
support KBN_OPTIMIZER_MAX_WORKERS for limiting workers via env
spalger Jan 28, 2020
e338773
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 28, 2020
58afee8
test support for KBN_OPTIMIZER_MAX_WORKERS
spalger Jan 28, 2020
39b7a96
expand the available memory for workers when only running one or two
spalger Jan 28, 2020
c70177d
add docs about KBN_OPTIMIZER_MAX_WORKERS environment variable
spalger Jan 28, 2020
75fde11
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 28, 2020
71294c6
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 28, 2020
4e851f6
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 28, 2020
3dea8ae
fix README link
spalger Jan 28, 2020
a8df88e
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 29, 2020
cf6ef2a
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Jan 31, 2020
d5241bd
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 3, 2020
d96475a
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 3, 2020
7a993b1
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 4, 2020
90bd445
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 4, 2020
3668d76
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 4, 2020
9ad7549
update kbn/pm dist
spalger Feb 4, 2020
784df98
implement bundle caching/reuse
spalger Feb 4, 2020
976d711
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 5, 2020
214ca6a
update kbn/pm dist
spalger Feb 5, 2020
de191ca
don't check for cache if --no-cache is passed
spalger Feb 5, 2020
8a06c59
update renovate config
spalger Feb 5, 2020
c61bb2f
standardize on index.scss, move console styles over
spalger Feb 5, 2020
a1d7d6e
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 5, 2020
785a77c
add support for --no-cache to cli
spalger Feb 5, 2020
3422ac8
include worker config vars in optimizer version
spalger Feb 5, 2020
c01562e
ignore concatenated modules
spalger Feb 5, 2020
7f2d330
update integration test
spalger Feb 5, 2020
d701fe3
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 5, 2020
5ab0208
add safari to browserslist to avoid user-agent warnings in dev
spalger Feb 5, 2020
23d069d
update docs, clean up optimizer message/misc naming
spalger Feb 5, 2020
78ed6b8
always handle initialized messages, don't ignore states that are atta…
spalger Feb 5, 2020
78ae262
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Feb 5, 2020
ee8cd0b
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Feb 5, 2020
f4787d8
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Feb 5, 2020
18aa8fc
reword caching docs, add environment var to disable caching
spalger Feb 5, 2020
9e2289f
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 5, 2020
c77c8e1
tweak logging and don't use optimizer.useBundleCache as that's disabl…
spalger Feb 6, 2020
a5b12c8
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 6, 2020
7c15bc0
handle change notifications
spalger Feb 6, 2020
58f4d57
batch changes for 1 second
spalger Feb 6, 2020
ec00ae2
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 6, 2020
bb7b370
Merge branch 'master' into implement/kbn-optimizer
elasticmachine Feb 6, 2020
7d7df93
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 6, 2020
c20b5f2
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 6, 2020
15d1e42
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 6, 2020
60800b0
rename CompilerState type to CompilerMsg
spalger Feb 6, 2020
442ec85
getChanges() no longer needs to assign changes to dirs
spalger Feb 6, 2020
af9c89a
remove unused deps
spalger Feb 6, 2020
37c5c0d
split up run_worker.ts and share cacheKey generation logic
spalger Feb 6, 2020
2395ee1
add a couple docs
spalger Feb 6, 2020
02f95a0
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 6, 2020
4e34191
update tests and remove unused imports
spalger Feb 6, 2020
610f65f
specify files when creating bundle cache key
spalger Feb 6, 2020
943bdcd
remove one more unused import
spalger Feb 6, 2020
2eb2cd4
match existing dev cli output more closely
spalger Feb 6, 2020
c855d27
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 6, 2020
793a008
update kbn/pm dist
spalger Feb 7, 2020
1d2b14d
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 7, 2020
eb7c282
set KBN_NP_PLUGINS_BUILT to avoid warning in CI
spalger Feb 7, 2020
4f1217b
avoid extending global window type
spalger Feb 7, 2020
33bdf96
add note to keep pluginScanDirs in sync
spalger Feb 7, 2020
6c034e7
pass browserslistEnv in workerConfig so it is used for cache key
spalger Feb 7, 2020
dff0ad2
load commons.bundle.js in parallel too
spalger Feb 7, 2020
db4aaf7
emit initialized+success states if all bundles are cached
spalger Feb 7, 2020
0991715
load bootstraps as quickly as possible
spalger Feb 7, 2020
de1e2f4
skip flaky suite
spalger Feb 7, 2020
5f70256
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 7, 2020
e372290
bump
spalger Feb 7, 2020
05bd681
update jest snapshots
spalger Feb 7, 2020
7d11025
remove hashing from cache key generation
spalger Feb 7, 2020
cea523e
remove unnecessary non-null assertion
spalger Feb 7, 2020
262f4ab
improve docs and break up Optimizer#run()
spalger Feb 8, 2020
a3c800b
remove unused import
spalger Feb 8, 2020
9f4cbab
refactor kbn/optimizer to break up observable logic, implement more h…
spalger Feb 10, 2020
6adeb68
fix tests
spalger Feb 10, 2020
85a398a
add initializing phase
spalger Feb 10, 2020
7aabd90
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 10, 2020
9546bf7
avoid rxjs observable constructor
spalger Feb 10, 2020
9636ac0
remove unnecessary rxjs helper, add tests for bundle cache
spalger Feb 11, 2020
aea28ad
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 11, 2020
096aac7
update consumers of optimizer
spalger Feb 11, 2020
960c2cd
update readme with new call style
spalger Feb 11, 2020
a6ce86a
replace "new platform" with "kibana platform"
spalger Feb 11, 2020
cebb017
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 11, 2020
04a4e82
fix a couple more renames
spalger Feb 11, 2020
045c86e
add support for several plain-text file formats
spalger Feb 11, 2020
b60c6ad
fix naming of OptimizerMsg => OptimizerUpdate, use "store" naming too
spalger Feb 11, 2020
9ca4328
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 11, 2020
8b689f3
one more OptimizerMsg update
spalger Feb 11, 2020
6e18553
ensure bundles are not cached when cache config is false
spalger Feb 11, 2020
e77a70a
test for initializing states and bundle cache events
spalger Feb 11, 2020
2896a6e
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 11, 2020
5e553b8
remove unnecessary timeout change
spalger Feb 11, 2020
7bb00e1
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 11, 2020
9c47ff0
Remove unnecessary helpers
spalger Feb 11, 2020
3159b1c
Add tests for BundleCache class
spalger Feb 11, 2020
a145e48
Add tests for Bundle class
spalger Feb 12, 2020
242b854
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 12, 2020
1a08b22
test summarizeEvent$
spalger Feb 12, 2020
8880e0c
missing paths are no longer listed in mtimes map
spalger Feb 12, 2020
0b990af
add tests for optimizer/cache_keys
spalger Feb 12, 2020
fdf535c
Add some extra docs
spalger Feb 12, 2020
deeaa5c
Remove labeled loop
spalger Feb 12, 2020
ec977a4
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 12, 2020
9525eb4
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 12, 2020
c190d78
add integration test for kbn-optimizer watcher components
spalger Feb 12, 2020
b037200
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 12, 2020
e9b4ad0
querystring-browser removed
spalger Feb 12, 2020
bfc269f
tweak logging a smidge, improve info and final message
spalger Feb 12, 2020
3c86dea
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 12, 2020
654ad79
remove unused imports
spalger Feb 12, 2020
7ab9f52
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 12, 2020
a802d02
remove duplication of getModuleCount() method
spalger Feb 12, 2020
7986dbe
move type annotation that validates things
spalger Feb 12, 2020
a0e2e8c
Merge branch 'master' of github.com:elastic/kibana into implement/kbn…
spalger Feb 12, 2020
b6390e7
clear up the build completion message
spalger Feb 12, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions packages/kbn-dev-utils/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,7 @@
*/

export { withProcRunner, ProcRunner } from './proc_runner';
export {
ToolingLog,
ToolingLogTextWriter,
pickLevelFromFlags,
ToolingLogCollectingWriter,
} from './tooling_log';
export * from './tooling_log';
export { createAbsolutePathSerializer } from './serializers';
export {
CA_CERT_PATH,
Expand Down
2 changes: 1 addition & 1 deletion packages/kbn-dev-utils/src/tooling_log/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@

export { ToolingLog } from './tooling_log';
export { ToolingLogTextWriter, ToolingLogTextWriterConfig } from './tooling_log_text_writer';
export { pickLevelFromFlags, LogLevel } from './log_levels';
export { pickLevelFromFlags, parseLogLevel, LogLevel } from './log_levels';
export { ToolingLogCollectingWriter } from './tooling_log_collecting_writer';
24 changes: 15 additions & 9 deletions packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,20 +82,28 @@ export class ToolingLogTextWriter implements Writer {
}
}

write({ type, indent, args }: Message) {
if (!shouldWriteType(this.level, type)) {
write(msg: Message) {
if (!shouldWriteType(this.level, msg.type)) {
return false;
}

const txt = type === 'error' ? stringifyError(args[0]) : format(args[0], ...args.slice(1));
const prefix = has(MSG_PREFIXES, type) ? MSG_PREFIXES[type] : '';
const prefix = has(MSG_PREFIXES, msg.type) ? MSG_PREFIXES[msg.type] : '';
ToolingLogTextWriter.write(this.writeTo, prefix, msg);
return true;
}

static write(writeTo: ToolingLogTextWriter['writeTo'], prefix: string, msg: Message) {
const txt =
msg.type === 'error'
? stringifyError(msg.args[0])
: format(msg.args[0], ...msg.args.slice(1));

(prefix + txt).split('\n').forEach((line, i) => {
let lineIndent = '';

if (indent > 0) {
if (msg.indent > 0) {
// if we are indenting write some spaces followed by a symbol
lineIndent += ' '.repeat(indent - 1);
lineIndent += ' '.repeat(msg.indent - 1);
lineIndent += line.startsWith('-') ? '└' : '│';
}

Expand All @@ -105,9 +113,7 @@ export class ToolingLogTextWriter implements Writer {
lineIndent += PREFIX_INDENT;
}

this.writeTo.write(`${lineIndent}${line}\n`);
writeTo.write(`${lineIndent}${line}\n`);
});

return true;
}
}
18 changes: 8 additions & 10 deletions packages/kbn-optimizer/src/log_optimizer_state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,27 +39,25 @@ export function logOptimizerState(log: ToolingLog, config: OptimizerConfig) {
if (event?.type === 'worker stdio') {
const chunk = event.chunk.toString('utf8');
log.warning(
'⚙️ worker',
`worker`,
event.stream,
chunk.slice(0, chunk.length - (chunk.endsWith('\n') ? 1 : 0))
);
}

if (event?.type === 'worker started') {
log.info(`⚙️ worker started for bundles ${event.bundles.map(b => b.id).join(', ')}`);
log.info(`worker started for bundles ${event.bundles.map(b => b.id).join(', ')}`);
}

if (state.phase === 'reallocating') {
log.debug(`⚙️ changes detected...`);
log.debug(`changes detected...`);
return;
}

if (state.phase === 'initialized') {
if (!loggedInit) {
loggedInit = true;
log.info(
`⚙️ @kbn/optimizer intialized, ${state.offlineBundles.length} bundles cached`
);
log.info(`intialized, ${state.offlineBundles.length} bundles cached`);
log.debug(`version: ${state.version}`);
log.debug(`cached: ${state.offlineBundles.map(b => b.id)}`);
}
Expand All @@ -76,7 +74,7 @@ export function logOptimizerState(log: ToolingLog, config: OptimizerConfig) {

bundleStates.set(id, type);
log.debug(
`⚙️ [${id}] state = "${type}"${type !== 'running' ? ` after ${state.durSec} sec` : ''}`
`[${id}] state = "${type}"${type !== 'running' ? ` after ${state.durSec} sec` : ''}`
);
}

Expand All @@ -85,7 +83,7 @@ export function logOptimizerState(log: ToolingLog, config: OptimizerConfig) {
}

if (state.phase === 'issue') {
log.error('⚙️ webpack compile errors');
log.error(`webpack compile errors`);
log.indent(4);
for (const b of state.compilerStates) {
if (b.type === 'compiler issue') {
Expand All @@ -102,8 +100,8 @@ export function logOptimizerState(log: ToolingLog, config: OptimizerConfig) {
if (state.phase === 'success') {
log.success(
config.watch
? `⚙️ watching for changes in all bundles after ${state.durSec} sec`
: `⚙️ all bundles compiled successfully after ${state.durSec} sec`
? `watching for changes in all bundles after ${state.durSec} sec`
spalger marked this conversation as resolved.
Show resolved Hide resolved
: `all bundles compiled successfully after ${state.durSec} sec`
);
return true;
}
Expand Down
2 changes: 1 addition & 1 deletion packages/kbn-optimizer/src/optimizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ export class Optimizer {
// reset start time if we are transitioning into running
const startTime =
(prevState.phase === 'success' || prevState.phase === 'issue') &&
stateChanges?.phase === 'running'
(stateChanges?.phase === 'running' || stateChanges?.phase === 'reallocating')
? Date.now()
: prevState.startTime;

Expand Down
49 changes: 36 additions & 13 deletions src/cli/cluster/run_kbn_optimizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,13 @@

import Chalk from 'chalk';
import moment from 'moment';
import { ToolingLog, pickLevelFromFlags, REPO_ROOT } from '@kbn/dev-utils';
import {
ToolingLog,
pickLevelFromFlags,
ToolingLogTextWriter,
parseLogLevel,
REPO_ROOT,
} from '@kbn/dev-utils';
import { OptimizerConfig, Optimizer, logOptimizerState } from '@kbn/optimizer';

import { LegacyConfig } from '../../core/server/legacy';
Expand All @@ -34,23 +40,40 @@ export function runKbnOptimizer(opts: Record<string, any>, config: LegacyConfig)
});

const dim = Chalk.dim('np bld');
const name = Chalk.magentaBright('@kbn/optimizer');
const time = () => moment().format('HH:mm:ss.SSS');
const toolingLog = new ToolingLog({
level: pickLevelFromFlags(opts),
writeTo: {
write: chunk => {
const trailingNewLine = chunk[chunk.length - 1] === '\n';
const level = (msgType: string) => {
switch (msgType) {
case 'info':
return Chalk.green(msgType);
case 'success':
return Chalk.cyan(msgType);
case 'debug':
return Chalk.gray(msgType);
default:
return msgType;
}
};
const { flags: levelFlags } = parseLogLevel(pickLevelFromFlags(opts));
const toolingLog = new ToolingLog();
const has = <T extends object>(obj: T, x: any): x is keyof T => obj.hasOwnProperty(x);

process.stdout.write(
chunk
.slice(0, chunk.length - (trailingNewLine ? 1 : 0))
.split('\n')
.map(line => `${dim} log [${time()}] ${line}`)
.join('\n') + (trailingNewLine ? '\n' : '')
toolingLog.setWriters([
{
write(msg) {
if (has(levelFlags, msg.type) && !levelFlags[msg.type]) {
return false;
}

ToolingLogTextWriter.write(
process.stdout,
`${dim} log [${time()}] [${level(msg.type)}][${name}] `,
msg
);
return true;
},
},
});
]);

const optimizer = new Optimizer(optimizerConfig);
return optimizer.run().pipe(logOptimizerState(toolingLog, optimizerConfig));
Expand Down