-
Notifications
You must be signed in to change notification settings - Fork 201
Proto field additions for JiT flow #2182
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,8 +14,16 @@ message RunConfig { | |
| bool include_dependencies = 3; | ||
| bool include_dependents = 11; | ||
| bool full_refresh = 2; | ||
|
|
||
| // Wall-clock deadline for the entire run. When hit, all in-flight actions are | ||
| // cancelled. Does not bound per-model JiT compilation; see jit_timeout_millis. | ||
| int32 timeout_millis = 7; | ||
|
|
||
| // Per-model JiT compilation worker timeout. Each action with JiT code gets | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why do we need it? Why not just use a generic timeout_millis? Scoping JiT stage of execution of timeout_millis looks like a broken contract to me.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. timeout_millis specifies the wall-clock deadline for the entire execution run (which can be hours). JiT compilation, however, is executed on a separate worker thread for each individual model immediately before its tasks run. If a single model's compilation hangs, allowing it to consume the entire timeout_millis would block the pipeline and starve other models. Each model needs its own small, independent compilation budget (defaulting to 60s) that resets per action. |
||
| // its own fresh budget; this is per-model, not a shared budget across the | ||
| // run. Falls back to DEFAULT_JIT_COMPILATION_TIMEOUT_MILLIS when unset. | ||
| int32 jit_timeout_millis = 10; | ||
|
|
||
| // For internal use only, will be removed at a later date. | ||
| bool disable_set_metadata = 9; | ||
|
|
||
|
|
@@ -46,6 +54,8 @@ message ExecutionAction { | |
|
|
||
| string jit_code = 12; | ||
|
|
||
| bool disabled = 13; | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why do we need this now? I don't think it was required before and don't understand why we need it now.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. With the introduction of JiT, actions are compiled at execution time, meaning both enabled and disabled JiT actions initially have an empty |
||
|
|
||
| reserved 1, 3, 7; | ||
| } | ||
|
|
||
|
|
@@ -118,6 +128,7 @@ message TaskResult { | |
| string error_message = 2; | ||
| Timing timing = 3; | ||
| ExecutionMetadata metadata = 4; | ||
| string compiled_sql = 5; | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why do we need it here? (I have some guess, but please add a comment explaining when it is populated).
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
| } | ||
|
|
||
| message TestResult { | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -130,6 +130,8 @@ message JitCompilationRequest { | |
| repeated string file_paths = 6; | ||
| // Current execution information for introspection. | ||
| RunningExecutionData execution_data = 7; | ||
| // File name where the target is defined. | ||
| string file_name = 8; | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why do we need it? Is it just for better error handling? (having it in PR description would be helpful)
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The |
||
| } | ||
|
|
||
| // JiT compilation response. | ||
|
|
||
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.
Same as protos/execution.proto.
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.
Same reply as #2182 (comment)