@@ -334,64 +334,7 @@ await podChannel.OnMessageRecieved(async pod =>
334
334
Logger . LogError ( JsonSerializer . Serialize ( pod . Item2 ) ) ;
335
335
break ;
336
336
case WatchEventType . Modified :
337
- if ( Pods . TryGetValue ( key , out var oldValue ) && Pods . TryUpdate ( key , pod . Item2 , oldValue ) )
338
- {
339
- var taskKey = PodLogsTaskKey ( pod . Item2 . Metadata . NamespaceProperty , pod . Item2 . Metadata . Name ) ;
340
-
341
- if ( TokensBag . TryGetValue ( taskKey , out var token ) )
342
- {
343
- if ( pod . Item2 . Status . Phase == "Succeeded" ||
344
- pod . Item2 . Status . Phase == "Failed" )
345
- {
346
- token . Cancel ( ) ;
347
-
348
- TokensBag . Remove ( taskKey ) ;
349
- }
350
- else if ( pod . Item2 . Status . Phase == "Running" ||
351
- pod . Item2 . Status . Phase == "Pending" )
352
- {
353
- Logger . LogInformation ( "Get metadata update on a pod that listen to logs" ) ;
354
- }
355
- else
356
- {
357
- Logger . LogWarning ( "Unknow state recieved from the hub" ) ;
358
- Logger . LogWarning ( WatchEventType . Modified . ToString ( ) ) ;
359
- Logger . LogWarning ( JsonSerializer . Serialize ( pod . Item2 ) ) ;
360
- }
361
- }
362
- else
363
- {
364
- if ( pod . Item2 . Status . Phase == "Succeeded" ||
365
- pod . Item2 . Status . Phase == "Failed" )
366
- {
367
- Logger . LogInformation ( "Get metadata update on a pod that listen to logs, but the pod is not ready for listening to logs" ) ;
368
- }
369
- else if ( pod . Item2 . Status . Phase == "Running" || pod . Item2 . Status . Phase == "Pending" )
370
- {
371
- if ( DeployementCheckedForLogs . Any ( d => pod . Item2 . Metadata . Name . StartsWith ( d ) ) )
372
- {
373
- Logger . LogInformation ( "Start listen to pod log after reveived a ready state" ) ;
374
- taskList . Add ( ListenTopPodLogs ( PodLogsTaskKey ( @namespace , podName ) , @namespace , podName ) ) ;
375
- }
376
- else
377
- {
378
- Logger . LogInformation ( $ "Recived { WatchEventType . Modified } from the hub for pod { podName } in namespace { @namespace } ") ;
379
- }
380
- }
381
- else
382
- {
383
- Logger . LogWarning ( "Unknow state recieved from the hub" ) ;
384
- Logger . LogWarning ( WatchEventType . Modified . ToString ( ) ) ;
385
- Logger . LogWarning ( JsonSerializer . Serialize ( pod . Item2 ) ) ;
386
- }
387
- }
388
- }
389
- else
390
- {
391
- var message = $ "Failed to update pod { pod . Item2 . Metadata . Name } ";
392
- Logger . LogError ( message ) ;
393
- Error = message ;
394
- }
337
+ OnUpdatePodInfo ( key , pod . Item2 , taskList ) ;
395
338
break ;
396
339
default :
397
340
throw new InvalidOperationException ( $ "Unknow { nameof ( WatchEventType ) } with value { pod . Item1 } ") ;
@@ -407,6 +350,68 @@ await InvokeAsync(() =>
407
350
await Task . WhenAll ( taskList ) ;
408
351
}
409
352
353
+ private void OnUpdatePodInfo ( string key , V1Pod pod , List < Task > taskList )
354
+ {
355
+ if ( Pods . TryGetValue ( key , out var oldValue ) && Pods . TryUpdate ( key , pod , oldValue ) )
356
+ {
357
+ var taskKey = PodLogsTaskKey ( pod . Metadata . NamespaceProperty , pod . Metadata . Name ) ;
358
+
359
+ if ( TokensBag . TryGetValue ( taskKey , out var token ) )
360
+ {
361
+ if ( pod . Status . Phase == "Succeeded" ||
362
+ pod . Status . Phase == "Failed" )
363
+ {
364
+ token . Cancel ( ) ;
365
+
366
+ TokensBag . Remove ( taskKey ) ;
367
+ }
368
+ else if ( pod . Status . Phase == "Running" ||
369
+ pod . Status . Phase == "Pending" )
370
+ {
371
+ Logger . LogInformation ( "Get metadata update on a pod that listen to logs" ) ;
372
+ }
373
+ else
374
+ {
375
+ Logger . LogWarning ( "Unknow state recieved from the hub" ) ;
376
+ Logger . LogWarning ( WatchEventType . Modified . ToString ( ) ) ;
377
+ Logger . LogWarning ( JsonSerializer . Serialize ( pod ) ) ;
378
+ }
379
+ }
380
+ else
381
+ {
382
+ if ( pod . Status . Phase == "Succeeded" ||
383
+ pod . Status . Phase == "Failed" )
384
+ {
385
+ Logger . LogInformation ( "Get metadata update on a pod that listen to logs, but the pod is not ready for listening to logs" ) ;
386
+ }
387
+ else if ( pod . Status . Phase == "Running" || pod . Status . Phase == "Pending" )
388
+ {
389
+ if ( DeployementCheckedForLogs . Any ( d => pod . Metadata . Name . StartsWith ( d ) ) )
390
+ {
391
+ Logger . LogInformation ( "Start listen to pod log after reveived a ready state" ) ;
392
+ taskList . Add ( ListenTopPodLogs ( PodLogsTaskKey ( pod . Namespace ( ) , pod . Name ( ) ) , pod . Namespace ( ) , pod . Name ( ) ) ) ;
393
+ }
394
+ else
395
+ {
396
+ Logger . LogInformation ( $ "Recived { WatchEventType . Modified } from the hub for pod { pod . Name ( ) } in namespace { pod . Namespace ( ) } ") ;
397
+ }
398
+ }
399
+ else
400
+ {
401
+ Logger . LogWarning ( "Unknow state recieved from the hub" ) ;
402
+ Logger . LogWarning ( WatchEventType . Modified . ToString ( ) ) ;
403
+ Logger . LogWarning ( JsonSerializer . Serialize ( pod ) ) ;
404
+ }
405
+ }
406
+ }
407
+ else
408
+ {
409
+ var message = $ "Failed to update pod { pod . Metadata . Name } ";
410
+ Logger . LogError ( message ) ;
411
+ Error = message ;
412
+ }
413
+ }
414
+
410
415
private async Task OnPodLogClick ( ChangeEventArgs args , string podNamespace , string podName )
411
416
{
412
417
var taskKey = PodLogsTaskKey ( podNamespace , podName ) ;
@@ -522,7 +527,21 @@ private async Task DeleteNamespace(V1Namespace ns)
522
527
523
528
private void ClearLogs ( )
524
529
{
525
- while ( PodLogs . TryTake ( out _ ) ) ;
530
+ try
531
+ {
532
+ bool trySucceeded = false ;
533
+
534
+ do
535
+ {
536
+ trySucceeded = PodLogs . TryTake ( out _ ) ;
537
+
538
+ } while ( trySucceeded ) ;
539
+ }
540
+ catch ( Exception e )
541
+ {
542
+ Error = $ "An error append when clearing logs: { e . Message } ";
543
+ Logger . LogWarning ( e , e . Message ) ;
544
+ }
526
545
}
527
546
528
547
private bool ScrollToBottom { get ; set ; }
0 commit comments