Repository navigation
fix(painless): pass script hashes and resolved plans - #179
Merged
Merged
Conversation
compiled_painless! passes each generated call site its script's hash and resolved plan. The text ships only where a bound runner still reads it: 351 sites over 221 scripts, down from 1,873 sites. - The script hash drops comments outside string literals. The 284 bespoke entries are re-keyed to it. - The stats catalogue uses that hash. Three scripts sharing one 200-character head now count separately. This moves never_ran from 61 to 63. - RemapKeysThroughTable refuses a target that is not a path. It had claimed okta's two risk-behaviour scripts with script text as its target. RiskBehaviors runs them now. - EpochToMillis and EpochNanosToDateTime match their helper by length and SHA-256. - The tests built on pipeline scripts move to the private repository, which compiles them under --cfg dfe_script_tests. - bespoke_registry, painless_binding and multi_binding stay in this repository and read the plans back. - The generated modules compile in 15 crates split by package. dfe-transforms re-exports them as filebeat, so no rustc holds the whole tree.
Takes main's scalo 2.14.30 pins and its regenerated config schema and deployment contract unchanged.
|
Released in v1.1.32 -- https://github.com/hyperi-io/dfe-transform-elastic/releases/tag/v1.1.32 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Each
compiled_painless!site carries its script hash and resolved plan. The generated tree carries pipeline script text only where a runner still reads it. The code that needed the text is in dfe-transform-elastic-dev #19.--cfg dfe_script_tests.bespoke_registry,painless_bindingandmulti_bindingread the plans back.RemapKeysThroughTablerejects targets that are not paths. It matched okta's two risk-behaviour scripts with script text as the target. That prevented RiskBehaviors from running.filebeatfrom dfe-transforms.never_ranrises from 61 to 63. The multi-binding floor falls from 58 to 56. Grouped by the old 200-character head,never_ranis still 61.Pipeline script audit for this branch (
scripts/script_audit.pyfrom -dev):The allowed file is a generated
remove()of a field path a script also removes.The largest crate, dfe-transforms-symantec, has one 6 MB module. Clippy peaks at 9.4 GiB on desktop-derek with sccache off. Its test-profile build also peaks at 9.4 GiB and takes 354 s.
The next five largest crates peak under 1.5 GiB. Before the split the whole tree peaked at 15.7 GiB.
On desktop-derek, the workspace passes plain
cargo testexcept tests/broker.rs. Those tests share one metrics recorder per process. Broker passes 9 of 9 under nextest, which CI uses.Each removed public file matches its -dev copy at #19's head
0982acca. The table shows the sha256 of public main's content:crates/dfe-painless/benches/painless.rsoverlay/crates/dfe-painless/benches/painless.rsf301e049169b267fcrates/dfe-painless/src/action_mapping_tests.rsoverlay/crates/dfe-painless/src/action_mapping_tests.rsb02e569fe1ec98f1crates/dfe-painless/src/actor_kind_tests.rsoverlay/crates/dfe-painless/src/actor_kind_tests.rse443c8685974ddbecrates/dfe-painless/src/collect_rows_tests.rsoverlay/crates/dfe-painless/src/collect_rows_tests.rs7beaaa63e6a963a1crates/dfe-painless/src/common_tests.rsoverlay/crates/dfe-painless/src/common_tests.rs9778ec7075bd53a1crates/dfe-painless/src/deep_merge_tests.rsoverlay/crates/dfe-painless/src/deep_merge_tests.rs530b8c36562c7a78crates/dfe-painless/src/element_mapping_tests.rsoverlay/crates/dfe-painless/src/element_mapping_tests.rs633ce60ab18fce8fcrates/dfe-painless/src/member_kv_fold_tests.rsoverlay/crates/dfe-painless/src/member_kv_fold_tests.rs7affe735e6ce5241crates/dfe-painless/src/member_ladder_tests.rsoverlay/crates/dfe-painless/src/member_ladder_tests.rs810e4ae83fadf091crates/dfe-painless/src/member_tags_tests.rsoverlay/crates/dfe-painless/src/member_tags_tests.rscb8dd4ab55064a70crates/dfe-painless/src/member_value_wrap_tests.rsoverlay/crates/dfe-painless/src/member_value_wrap_tests.rs962225aafebafef8crates/dfe-painless/src/params_tests.rsoverlay/crates/dfe-painless/src/params_tests.rs468c23a7352f5843crates/dfe-painless/src/securityhub_ocsf_tests.rsoverlay/crates/dfe-painless/src/securityhub_ocsf_tests.rs7b00c0eca527b26acrates/dfe-painless/src/set_ladder_tests.rsoverlay/crates/dfe-painless/src/set_ladder_tests.rsee4188a8c9ae13eacrates/dfe-painless/src/stringify_member_tests.rsoverlay/crates/dfe-painless/src/stringify_member_tests.rsc49991038333aa5ecrates/dfe-painless/src/time_order_flag_tests.rsoverlay/crates/dfe-painless/src/time_order_flag_tests.rs82c94f5ed624290acrates/dfe-painless/src/url_action_tests.rsoverlay/crates/dfe-painless/src/url_action_tests.rsfb5ae7d41adb8b0ecrates/dfe-painless/tests/singleton_unwrap.rsoverlay/crates/dfe-painless/tests/singleton_unwrap.rs05cbf76d5f760605crates/dfe-painless/tests/which_matcher.rsoverlay/crates/dfe-painless/tests/which_matcher.rsef5a89714d9f65e0The 42 test modules moved from public files to -dev. Each matches the module body at public main with its 4-space indent removed:
crates/dfe-painless/src/append_records.rs(test module)overlay/crates/dfe-painless/src/append_records_tests.rscrates/dfe-painless/src/byte_size.rs(test module)overlay/crates/dfe-painless/src/byte_size_tests.rscrates/dfe-painless/src/coercion.rs(test module)overlay/crates/dfe-painless/src/coercion_tests.rscrates/dfe-painless/src/collect_by_literal.rs(test module)overlay/crates/dfe-painless/src/collect_by_literal_tests.rscrates/dfe-painless/src/collect_present.rs(test module)overlay/crates/dfe-painless/src/collect_present_tests.rscrates/dfe-painless/src/delimited_table.rs(test module)overlay/crates/dfe-painless/src/delimited_table_tests.rscrates/dfe-painless/src/dotted_keys.rs(test module)overlay/crates/dfe-painless/src/dotted_keys_tests.rscrates/dfe-painless/src/dump_into_map.rs(test module)overlay/crates/dfe-painless/src/dump_into_map_tests.rscrates/dfe-painless/src/entity.rs(test module)overlay/crates/dfe-painless/src/entity_tests.rscrates/dfe-painless/src/expr.rs(test module)overlay/crates/dfe-painless/src/expr_tests.rscrates/dfe-painless/src/field_tables.rs(test module)overlay/crates/dfe-painless/src/field_tables_tests.rscrates/dfe-painless/src/gather_members.rs(test module)overlay/crates/dfe-painless/src/gather_members_tests.rscrates/dfe-painless/src/group_records.rs(test module)overlay/crates/dfe-painless/src/group_records_tests.rscrates/dfe-painless/src/guarded_records.rs(test module)overlay/crates/dfe-painless/src/guarded_records_tests.rscrates/dfe-painless/src/hex.rs(test module)overlay/crates/dfe-painless/src/hex_tests.rscrates/dfe-painless/src/hoist.rs(test module)overlay/crates/dfe-painless/src/hoist_tests.rscrates/dfe-painless/src/indicator_expiry.rs(test module)overlay/crates/dfe-painless/src/indicator_expiry_tests.rscrates/dfe-painless/src/issue_lifecycle.rs(test module)overlay/crates/dfe-painless/src/issue_lifecycle_tests.rscrates/dfe-painless/src/item_writes.rs(test module)overlay/crates/dfe-painless/src/item_writes_tests.rscrates/dfe-painless/src/labelled_keys.rs(test module)overlay/crates/dfe-painless/src/labelled_keys_tests.rscrates/dfe-painless/src/labelled_score.rs(test module)overlay/crates/dfe-painless/src/labelled_score_tests.rscrates/dfe-painless/src/level_labels.rs(test module)overlay/crates/dfe-painless/src/level_labels_tests.rscrates/dfe-painless/src/list_records.rs(test module)overlay/crates/dfe-painless/src/list_records_tests.rscrates/dfe-painless/src/lists.rs(test module)overlay/crates/dfe-painless/src/lists_tests.rscrates/dfe-painless/src/map_entries.rs(test module)overlay/crates/dfe-painless/src/map_entries_tests.rscrates/dfe-painless/src/member_fan_out.rs(test module)overlay/crates/dfe-painless/src/member_fan_out_tests.rscrates/dfe-painless/src/named_arms.rs(test module)overlay/crates/dfe-painless/src/named_arms_tests.rscrates/dfe-painless/src/needle_table.rs(test module)overlay/crates/dfe-painless/src/needle_table_tests.rscrates/dfe-painless/src/nth_separator.rs(test module)overlay/crates/dfe-painless/src/nth_separator_tests.rscrates/dfe-painless/src/pair_table.rs(test module)overlay/crates/dfe-painless/src/pair_table_tests.rscrates/dfe-painless/src/plan.rs(test module)overlay/crates/dfe-painless/src/plan_tests.rscrates/dfe-painless/src/record_fold.rs(test module)overlay/crates/dfe-painless/src/record_fold_tests.rscrates/dfe-painless/src/records.rs(test module)overlay/crates/dfe-painless/src/records_tests.rscrates/dfe-painless/src/rescale.rs(test module)overlay/crates/dfe-painless/src/rescale_tests.rscrates/dfe-painless/src/seconds_between.rs(test module)overlay/crates/dfe-painless/src/seconds_between_tests.rscrates/dfe-painless/src/split_fanout.rs(test module)overlay/crates/dfe-painless/src/split_fanout_tests.rscrates/dfe-painless/src/threat_artifacts.rs(test module)overlay/crates/dfe-painless/src/threat_artifacts_tests.rscrates/dfe-painless/src/totals.rs(test module)overlay/crates/dfe-painless/src/totals_tests.rscrates/dfe-painless/src/typed_member_rename.rs(test module)overlay/crates/dfe-painless/src/typed_member_rename_tests.rscrates/dfe-painless/src/windows.rs(test module)overlay/crates/dfe-painless/src/windows_tests.rscrates/dfe-painless/src/trim_delimited.rs(test module)overlay/crates/dfe-painless/src/trim_delimited_tests.rscrates/dfe-painless/src/last_element.rs(test module)overlay/crates/dfe-painless/src/last_element_tests.rs