check if the acquis tomb is dying while processing logs in replay mode for file/s3/docker (#2152)
This commit is contained in:
parent
3132aa54b7
commit
0279e549bd
|
@ -311,6 +311,10 @@ func (d *DockerSource) OneShotAcquisition(out chan types.Event, t *tomb.Tomb) er
|
|||
scanner = bufio.NewScanner(reader)
|
||||
}
|
||||
for scanner.Scan() {
|
||||
select {
|
||||
case <-t.Dying():
|
||||
d.logger.Infof("Shutting down reader for container %s", containerConfig.Name)
|
||||
default:
|
||||
line := scanner.Text()
|
||||
if line == "" {
|
||||
continue
|
||||
|
@ -327,6 +331,7 @@ func (d *DockerSource) OneShotAcquisition(out chan types.Event, t *tomb.Tomb) er
|
|||
out <- evt
|
||||
d.logger.Debugf("Sent line to parsing: %+v", evt.Line.Raw)
|
||||
}
|
||||
}
|
||||
err = scanner.Err()
|
||||
if err != nil {
|
||||
d.logger.Errorf("Got error from docker read: %s", err)
|
||||
|
|
|
@ -514,6 +514,11 @@ func (f *FileSource) readFile(filename string, out chan types.Event, t *tomb.Tom
|
|||
scanner.Buffer(buf, f.config.MaxBufferSize)
|
||||
}
|
||||
for scanner.Scan() {
|
||||
select {
|
||||
case <-t.Dying():
|
||||
logger.Infof("File datasource %s stopping", filename)
|
||||
return nil
|
||||
default:
|
||||
if scanner.Text() == "" {
|
||||
continue
|
||||
}
|
||||
|
@ -531,6 +536,7 @@ func (f *FileSource) readFile(filename string, out chan types.Event, t *tomb.Tom
|
|||
//we're reading logs at once, it must be time-machine buckets
|
||||
out <- types.Event{Line: l, Process: true, Type: types.LOG, ExpectMode: types.TIMEMACHINE}
|
||||
}
|
||||
}
|
||||
if err := scanner.Err(); err != nil {
|
||||
logger.Errorf("Error while reading file: %s", err)
|
||||
t.Kill(err)
|
||||
|
|
|
@ -418,6 +418,11 @@ func (s *S3Source) readFile(bucket string, key string) error {
|
|||
scanner.Buffer(buf, s.Config.MaxBufferSize)
|
||||
}
|
||||
for scanner.Scan() {
|
||||
select {
|
||||
case <-s.t.Dying():
|
||||
s.logger.Infof("Shutting down reader for %s/%s", bucket, key)
|
||||
return nil
|
||||
default:
|
||||
text := scanner.Text()
|
||||
logger.Tracef("Read line %s", text)
|
||||
linesRead.WithLabelValues(bucket).Inc()
|
||||
|
@ -436,6 +441,7 @@ func (s *S3Source) readFile(bucket string, key string) error {
|
|||
}
|
||||
s.out <- evt
|
||||
}
|
||||
}
|
||||
if err := scanner.Err(); err != nil {
|
||||
return fmt.Errorf("failed to read object %s/%s: %s", bucket, key, err)
|
||||
}
|
||||
|
@ -629,6 +635,7 @@ func (s *S3Source) OneShotAcquisition(out chan types.Event, t *tomb.Tomb) error
|
|||
s.out = out
|
||||
s.ctx, s.cancel = context.WithCancel(context.Background())
|
||||
s.Config.UseTimeMachine = true
|
||||
s.t = t
|
||||
if s.Config.Key != "" {
|
||||
err := s.readFile(s.Config.BucketName, s.Config.Key)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in a new issue