@@ -78,7 +78,7 @@ impl WorkflowsWorker {
78
78
79
79
if let Some ( task) = task {
80
80
log:: info!( "Processing single workflow for task {}" , task. task_id) ;
81
- WorkflowsWorker :: execute ( ( task, self . publish_tx . clone ( ) ) ) . await
81
+ WorkflowsWorker :: execute ( ( task, & self . publish_tx ) ) . await
82
82
} else {
83
83
return self . shutdown ( ) ;
84
84
} ;
@@ -108,61 +108,53 @@ impl WorkflowsWorker {
108
108
109
109
// process the batch
110
110
log:: info!( "Processing {} workflows in batch" , num_tasks) ;
111
- let mut batch = task_buffer
112
- . into_iter ( )
113
- . map ( |b| ( b, self . publish_tx . clone ( ) ) ) ;
111
+ let mut batch = task_buffer. into_iter ( ) . map ( |b| ( b, & self . publish_tx ) ) ;
114
112
match num_tasks {
115
113
1 => {
116
- let r0 = WorkflowsWorker :: execute ( batch. next ( ) . unwrap ( ) ) . await ;
117
- vec ! [ r0]
114
+ WorkflowsWorker :: execute ( batch. next ( ) . unwrap ( ) ) . await ;
118
115
}
119
116
2 => {
120
- let ( r0 , r1 ) = tokio:: join!(
117
+ tokio:: join!(
121
118
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
122
119
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) )
123
120
) ;
124
- vec ! [ r0, r1]
125
121
}
126
122
3 => {
127
- let ( r0 , r1 , r2 ) = tokio:: join!(
123
+ tokio:: join!(
128
124
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
129
125
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
130
126
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) )
131
127
) ;
132
- vec ! [ r0, r1, r2]
133
128
}
134
129
4 => {
135
- let ( r0 , r1 , r2 , r3 ) = tokio:: join!(
130
+ tokio:: join!(
136
131
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
137
132
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
138
133
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
139
134
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) )
140
135
) ;
141
- vec ! [ r0, r1, r2, r3]
142
136
}
143
137
5 => {
144
- let ( r0 , r1 , r2 , r3 , r4 ) = tokio:: join!(
138
+ tokio:: join!(
145
139
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
146
140
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
147
141
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
148
142
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
149
143
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) )
150
144
) ;
151
- vec ! [ r0, r1, r2, r3, r4]
152
145
}
153
146
6 => {
154
- let ( r0 , r1 , r2 , r3 , r4 , r5 ) = tokio:: join!(
147
+ tokio:: join!(
155
148
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
156
149
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
157
150
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
158
151
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
159
152
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
160
153
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) )
161
154
) ;
162
- vec ! [ r0, r1, r2, r3, r4, r5]
163
155
}
164
156
7 => {
165
- let ( r0 , r1 , r2 , r3 , r4 , r5 , r6 ) = tokio:: join!(
157
+ tokio:: join!(
166
158
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
167
159
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
168
160
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
@@ -171,10 +163,9 @@ impl WorkflowsWorker {
171
163
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
172
164
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) )
173
165
) ;
174
- vec ! [ r0, r1, r2, r3, r4, r5, r6]
175
166
}
176
167
8 => {
177
- let ( r0 , r1 , r2 , r3 , r4 , r5 , r6 , r7 ) = tokio:: join!(
168
+ tokio:: join!(
178
169
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
179
170
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
180
171
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
@@ -184,7 +175,6 @@ impl WorkflowsWorker {
184
175
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) ) ,
185
176
WorkflowsWorker :: execute( batch. next( ) . unwrap( ) )
186
177
) ;
187
- vec ! [ r0, r1, r2, r3, r4, r5, r6, r7]
188
178
}
189
179
_ => {
190
180
unreachable ! (
@@ -199,23 +189,28 @@ impl WorkflowsWorker {
199
189
200
190
/// Executes a single task, and publishes the output.
201
191
pub async fn execute (
202
- ( input, publish_tx) : ( WorkflowsWorkerInput , mpsc:: Sender < WorkflowsWorkerOutput > ) ,
192
+ ( input, publish_tx) : ( WorkflowsWorkerInput , & mpsc:: Sender < WorkflowsWorkerOutput > ) ,
203
193
) {
194
+ let mut stats = input. stats ;
195
+
204
196
let mut memory = ProgramMemory :: new ( ) ;
205
197
198
+ // TODO: will be removed later
206
199
let started_at = std:: time:: Instant :: now ( ) ;
200
+ stats = stats. record_execution_started_at ( ) ;
207
201
let result = input
208
202
. executor
209
203
. execute ( input. entry . as_ref ( ) , & input. workflow , & mut memory)
210
204
. await ;
205
+ stats = stats. record_execution_ended_at ( ) ;
211
206
212
207
let output = WorkflowsWorkerOutput {
213
208
result,
214
209
public_key : input. public_key ,
215
210
task_id : input. task_id ,
216
211
model_name : input. model_name ,
217
212
batchable : input. batchable ,
218
- stats : input . stats . record_execution_time ( started_at) ,
213
+ stats : stats. record_execution_time ( started_at) ,
219
214
} ;
220
215
221
216
if let Err ( e) = publish_tx. send ( output) . await {
0 commit comments