mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	allow for non-fatal errors when requesting and following multiple log streams
This commit is contained in:
		@@ -99,6 +99,7 @@ type LogsOptions struct {
 | 
			
		||||
	Follow          bool
 | 
			
		||||
	Previous        bool
 | 
			
		||||
	Timestamps      bool
 | 
			
		||||
	IgnoreLogErrors bool
 | 
			
		||||
	LimitBytes      int64
 | 
			
		||||
	Tail            int64
 | 
			
		||||
	Container       string
 | 
			
		||||
@@ -153,6 +154,7 @@ func NewCmdLogs(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.C
 | 
			
		||||
	cmd.Flags().Int64Var(&o.LimitBytes, "limit-bytes", o.LimitBytes, "Maximum bytes of logs to return. Defaults to no limit.")
 | 
			
		||||
	cmd.Flags().BoolVarP(&o.Previous, "previous", "p", o.Previous, "If true, print the logs for the previous instance of the container in a pod if it exists.")
 | 
			
		||||
	cmd.Flags().Int64Var(&o.Tail, "tail", o.Tail, "Lines of recent log file to display. Defaults to -1 with no selector, showing all log lines otherwise 10, if a selector is provided.")
 | 
			
		||||
	cmd.Flags().BoolVar(&o.IgnoreLogErrors, "ignore-errors", o.IgnoreLogErrors, "If watching / following pod logs, allow for any errors that occur to be non-fatal")
 | 
			
		||||
	cmd.Flags().StringVar(&o.SinceTime, "since-time", o.SinceTime, i18n.T("Only return logs after a specific date (RFC3339). Defaults to all logs. Only one of since-time / since may be used."))
 | 
			
		||||
	cmd.Flags().DurationVar(&o.SinceSeconds, "since", o.SinceSeconds, "Only return logs newer than a relative duration like 5s, 2m, or 3h. Defaults to all logs. Only one of since-time / since may be used.")
 | 
			
		||||
	cmd.Flags().StringVarP(&o.Container, "container", "c", o.Container, "Print the logs of this container")
 | 
			
		||||
@@ -323,12 +325,16 @@ func (o LogsOptions) parallelConsumeRequest(requests []rest.ResponseWrapper) err
 | 
			
		||||
	for _, request := range requests {
 | 
			
		||||
		go func(request rest.ResponseWrapper) {
 | 
			
		||||
			if err := o.ConsumeRequestFn(request, writer); err != nil {
 | 
			
		||||
				if !o.IgnoreLogErrors {
 | 
			
		||||
					writer.CloseWithError(err)
 | 
			
		||||
 | 
			
		||||
					// It's important to return here to propagate the error via the pipe
 | 
			
		||||
					return
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				fmt.Fprintf(writer, "error: %v\n", err)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			wg.Done()
 | 
			
		||||
		}(request)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user