84e60a7e10
Fixes a race where the log reader would get events for both an actual rotation as we from fsnotify (`fsnotify.Rename`). This issue becomes extremely apparent when rotations are fast, for example: ``` $ docker run -d --name test --log-opt max-size=1 --log-opt max-file=2 busybox sh -c 'while true; do echo hello; usleep 100000; done' ``` With this change the log reader for jsonlogs can handle rotations that happen as above. Instead of listening for both fs events AND rotation events simultaneously, potentially meaning we see 2 rotations for only a single rotation due to channel buffering, only listen for fs events (like `Rename`) and then wait to be notified about rotation by the logger. This makes sure that we don't see 2 rotations for 1, and that we don't start trying to read until the logger is actually ready for us to. Signed-off-by: Brian Goff <cpuguy83@gmail.com> |
||
---|---|---|
.. | ||
awslogs | ||
etwlogs | ||
fluentd | ||
gcplogs | ||
gelf | ||
journald | ||
jsonfilelog | ||
loggerutils | ||
splunk | ||
syslog | ||
context.go | ||
copier.go | ||
copier_test.go | ||
factory.go | ||
logger.go |