@@ -188,9 +188,7 @@ func GetLogKeys(pod kcore.Pod) strset.Set {
188
188
containerStatuses := append (pod .Status .InitContainerStatuses , pod .Status .ContainerStatuses ... )
189
189
logKeys := strset .New ()
190
190
for _ , status := range containerStatuses {
191
- if status .State .Terminated != nil && (status .State .Terminated .ExitCode != 0 || status .State .Terminated .StartedAt .After (time .Now ().Add (- newPodCheckInterval ))) {
192
- logKeys .Add (GetLogKey (pod , status ).String ())
193
- } else if status .State .Running != nil {
191
+ if status .State .Terminated != nil || status .State .Running != nil {
194
192
logKeys .Add (GetLogKey (pod , status ).String ())
195
193
}
196
194
}
@@ -235,6 +233,10 @@ func podCheck(podCheckCancel chan struct{}, socket *websocket.Conn, initialPodLi
235
233
defer outw .Close ()
236
234
defer outr .Close ()
237
235
236
+ procAttr := os.ProcAttr {
237
+ Files : []* os.File {inr , outw , outw },
238
+ }
239
+
238
240
socketWriterError := make (chan error , 1 )
239
241
defer close (socketWriterError )
240
242
@@ -286,10 +288,53 @@ func podCheck(podCheckCancel chan struct{}, socket *websocket.Conn, initialPodLi
286
288
wrotePending = false
287
289
}
288
290
291
+ initProcesses := strset .New ()
292
+ tfServingProcesses := strset .New ()
293
+ apiProcesses := strset .New ()
294
+
289
295
for logProcess := range processesToAdd {
290
- process , err := createKubectlProcess (StringToLogKey (logProcess ), & os.ProcAttr {
291
- Files : []* os.File {inr , outw , outw },
292
- })
296
+ logKey := StringToLogKey (logProcess )
297
+ switch logKey .ContainerName {
298
+ case downloaderInitContainerName :
299
+ initProcesses .Add (logProcess )
300
+ case tfServingContainerName :
301
+ tfServingProcesses .Add (logProcess )
302
+ case apiContainerName :
303
+ apiProcesses .Add (logProcess )
304
+ default :
305
+ socketWriterError <- errors .New ("unexpected container type encountered " + logKey .ContainerName ) // unexpected
306
+ return
307
+ }
308
+ }
309
+
310
+ for logProcess := range initProcesses {
311
+ process , err := createKubectlProcess (StringToLogKey (logProcess ), & procAttr )
312
+ if err != nil {
313
+ socketWriterError <- err
314
+ return
315
+ }
316
+ processMap [logProcess ] = process
317
+ }
318
+
319
+ if len (tfServingProcesses ) != 0 && len (initProcesses ) != 0 {
320
+ time .Sleep (100 * time .Millisecond )
321
+ }
322
+
323
+ for logProcess := range tfServingProcesses {
324
+ process , err := createKubectlProcess (StringToLogKey (logProcess ), & procAttr )
325
+ if err != nil {
326
+ socketWriterError <- err
327
+ return
328
+ }
329
+ processMap [logProcess ] = process
330
+ }
331
+
332
+ if len (apiProcesses ) != 0 && (len (tfServingProcesses ) != 0 || len (initProcesses ) != 0 ) {
333
+ time .Sleep (100 * time .Millisecond )
334
+ }
335
+
336
+ for logProcess := range apiProcesses {
337
+ process , err := createKubectlProcess (StringToLogKey (logProcess ), & procAttr )
293
338
if err != nil {
294
339
socketWriterError <- err
295
340
return
@@ -387,7 +432,7 @@ func pumpStdout(socket *websocket.Conn, socketWriterError chan error, reader io.
387
432
select {
388
433
case err := <- socketWriterError :
389
434
if err != nil {
390
- writeSocket (err .Error (), socket )
435
+ writeSocket (err .Error ()+ " \n " , socket )
391
436
}
392
437
default :
393
438
}
0 commit comments