@@ -31,10 +31,10 @@ pub struct JobSubmitFileOpts {
3131 job : Option < JobId > ,
3232}
3333
34- fn create_stdio ( def : Option < StdioDefInput > , default : & str , is_log : bool ) -> StdioDef {
34+ fn create_stdio ( def : Option < StdioDefInput > , default : & str , has_streaming : bool ) -> StdioDef {
3535 match def {
3636 None => {
37- if is_log {
37+ if has_streaming {
3838 StdioDef :: Pipe
3939 } else {
4040 StdioDef :: File {
@@ -54,14 +54,14 @@ fn create_stdio(def: Option<StdioDefInput>, default: &str, is_log: bool) -> Stdi
5454 }
5555}
5656
57- fn build_task_description ( cfg : TaskConfigDef ) -> TaskDescription {
57+ fn build_task_description ( cfg : TaskConfigDef , has_streaming : bool ) -> TaskDescription {
5858 TaskDescription {
5959 kind : TaskKind :: ExternalProgram ( TaskKindProgram {
6060 program : ProgramDefinition {
6161 args : cfg. command . into_iter ( ) . map ( |x| x. into ( ) ) . collect ( ) ,
6262 env : cfg. env ,
63- stdout : create_stdio ( cfg. stdout , DEFAULT_STDOUT_PATH , false ) ,
64- stderr : create_stdio ( cfg. stderr , DEFAULT_STDERR_PATH , false ) ,
63+ stdout : create_stdio ( cfg. stdout , DEFAULT_STDOUT_PATH , has_streaming ) ,
64+ stderr : create_stdio ( cfg. stderr , DEFAULT_STDERR_PATH , has_streaming ) ,
6565 stdin : cfg. stdin . map ( |s| s. as_bytes ( ) . into ( ) ) . unwrap_or_default ( ) ,
6666 cwd : cfg. cwd . map ( |x| x. into ( ) ) . unwrap_or_else ( get_current_dir) ,
6767 } ,
@@ -89,6 +89,7 @@ fn build_task(
8989 tdef : TaskDef ,
9090 max_id : & mut JobTaskId ,
9191 data_flags : TaskDataFlags ,
92+ has_streaming : bool ,
9293) -> TaskWithDependencies {
9394 let id = tdef. id . unwrap_or_else ( || {
9495 * max_id = JobTaskId :: new ( max_id. as_num ( ) + 1 ) ;
@@ -97,13 +98,13 @@ fn build_task(
9798 TaskWithDependencies {
9899 id,
99100 data_flags,
100- task_desc : build_task_description ( tdef. config ) ,
101+ task_desc : build_task_description ( tdef. config , has_streaming ) ,
101102 task_deps : tdef. deps ,
102103 data_deps : tdef. data_deps ,
103104 }
104105}
105106
106- fn build_job_desc_array ( array : ArrayDef ) -> JobTaskDescription {
107+ fn build_job_desc_array ( array : ArrayDef , has_streaming : bool ) -> JobTaskDescription {
107108 let ids = array
108109 . ids
109110 . unwrap_or_else ( || IntArray :: from_range ( 0 , array. entries . len ( ) as JobTaskCount ) ) ;
@@ -121,13 +122,14 @@ fn build_job_desc_array(array: ArrayDef) -> JobTaskDescription {
121122 JobTaskDescription :: Array {
122123 ids,
123124 entries,
124- task_desc : build_task_description ( array. config ) ,
125+ task_desc : build_task_description ( array. config , has_streaming ) ,
125126 }
126127}
127128
128129fn build_job_desc_individual_tasks (
129130 tasks : Vec < TaskDef > ,
130131 data_flags : TaskDataFlags ,
132+ has_streaming : bool ,
131133) -> crate :: Result < JobTaskDescription > {
132134 let mut max_id: JobTaskId = tasks
133135 . iter ( )
@@ -143,7 +145,7 @@ fn build_job_desc_individual_tasks(
143145 let mut in_degrees = Map :: new ( ) ;
144146 let mut consumers: Map < JobTaskId , Vec < _ > > = Map :: new ( ) ;
145147 for task in tasks {
146- let t = build_task ( task, & mut max_id, data_flags) ;
148+ let t = build_task ( task, & mut max_id, data_flags, has_streaming ) ;
147149 if in_degrees. insert ( t. id , t. task_deps . len ( ) ) . is_some ( ) {
148150 return Err ( crate :: Error :: GenericError ( format ! (
149151 "Task {} is defined multiple times" ,
@@ -190,13 +192,13 @@ fn build_job_desc_individual_tasks(
190192
191193fn build_job_submit ( jdef : JobDef , job_id : Option < JobId > ) -> crate :: Result < SubmitRequest > {
192194 let task_desc = if let Some ( array) = jdef. array {
193- build_job_desc_array ( array)
195+ build_job_desc_array ( array, jdef . stream . is_some ( ) )
194196 } else {
195197 let mut data_flags = TaskDataFlags :: empty ( ) ;
196198 if jdef. data_layer {
197199 data_flags. insert ( TaskDataFlags :: ENABLE_DATA_LAYER ) ;
198200 }
199- build_job_desc_individual_tasks ( jdef. tasks , data_flags) ?
201+ build_job_desc_individual_tasks ( jdef. tasks , data_flags, jdef . stream . is_some ( ) ) ?
200202 } ;
201203 Ok ( SubmitRequest {
202204 job_desc : JobDescription {
0 commit comments