fix: improve log retry logic (#3580)
* fix: improve log retry logic * fix: streamline log retry logic and improve error handlingmine
parent
5b877f5807
commit
2ed7206896
|
|
@ -372,20 +372,19 @@ func tailLogs(ctx context.Context, logger Logger, opts *LogOptions) LogChan {
|
||||||
delay := logBackoffInitial
|
delay := logBackoffInitial
|
||||||
|
|
||||||
for range logRetryCount {
|
for range logRetryCount {
|
||||||
// Check if we should stop retrying based on pod status
|
|
||||||
if pod, ok := logger.(*Pod); ok && pod.shouldStopRetrying(opts.Path) {
|
|
||||||
slog.Debug("Stopping log retry - pod is terminating or deleted",
|
|
||||||
slogs.Container, opts.Info(),
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
req, err := logger.Logs(opts.Path, podOpts)
|
req, err := logger.Logs(opts.Path, podOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("Log request failed",
|
slog.Error("Log request failed",
|
||||||
slogs.Container, opts.Info(),
|
slogs.Container, opts.Info(),
|
||||||
slogs.Error, err,
|
slogs.Error, err,
|
||||||
)
|
)
|
||||||
|
// Check if we should stop retrying based on pod status
|
||||||
|
if pod, ok := logger.(*Pod); ok && pod.shouldStopRetrying(opts.Path) {
|
||||||
|
slog.Debug("Stopping log retry - pod is terminating or deleted",
|
||||||
|
slogs.Container, opts.Info(),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return
|
return
|
||||||
|
|
@ -403,6 +402,13 @@ func tailLogs(ctx context.Context, logger Logger, opts *LogOptions) LogChan {
|
||||||
slogs.Error, e,
|
slogs.Error, e,
|
||||||
slogs.Container, opts.Info(),
|
slogs.Container, opts.Info(),
|
||||||
)
|
)
|
||||||
|
// Check if we should stop retrying based on pod status
|
||||||
|
if pod, ok := logger.(*Pod); ok && pod.shouldStopRetrying(opts.Path) {
|
||||||
|
slog.Debug("Stopping log retry - pod is terminating or deleted",
|
||||||
|
slogs.Container, opts.Info(),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return
|
return
|
||||||
|
|
@ -466,7 +472,7 @@ func tailLogs(ctx context.Context, logger Logger, opts *LogOptions) LogChan {
|
||||||
func readLogs(ctx context.Context, stream io.ReadCloser, out chan<- *LogItem, opts *LogOptions) streamResult {
|
func readLogs(ctx context.Context, stream io.ReadCloser, out chan<- *LogItem, opts *LogOptions) streamResult {
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := stream.Close(); err != nil && !errors.Is(err, io.ErrClosedPipe) {
|
if err := stream.Close(); err != nil && !errors.Is(err, io.ErrClosedPipe) {
|
||||||
slog.Error("Fail to close stream",
|
slog.Error("Failed to close stream",
|
||||||
slogs.Container, opts.Info(),
|
slogs.Container, opts.Info(),
|
||||||
slogs.Error, err,
|
slogs.Error, err,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue