mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
b102d4637c
This fixes the case where log rotation fails on Windows while there are clients reading container logs. Evicts readers if there is an error during rotation and try rotation again. This is needed for Windows with this scenario: 1. `docker logs -f` is called 2. Log rotation occurs (log.txt -> log.txt.1, truncate and re-open log.txt) 3. Log rotation occurs again (rm log.txt.1, log.txt -> log.txt.1) On step 3, before this change, the log rotation will fail with `Access is denied`. In this case, what we have is a reader holding a file handle to the primary log file. The log file is then rotated, but the reader still has a the handle open. `FILE_SHARE_DELETE` allows this to happen... but then we try to do it again for the next rotation and it blows up. So when it blows up we force all the readers to disconnect, close the log file, and try rotation again, which will succeed based on the added tests. Signed-off-by: Brian Goff <cpuguy83@gmail.com> |
||
---|---|---|
.. | ||
awslogs | ||
etwlogs | ||
fluentd | ||
gcplogs | ||
gelf | ||
journald | ||
jsonfilelog | ||
local | ||
logentries | ||
loggerutils | ||
splunk | ||
syslog | ||
templates | ||
adapter.go | ||
adapter_test.go | ||
copier.go | ||
copier_test.go | ||
factory.go | ||
log_cache_opts.go | ||
logger.go | ||
logger_test.go | ||
loginfo.go | ||
metrics.go | ||
plugin.go | ||
plugin_unix.go | ||
plugin_unsupported.go | ||
proxy.go | ||
ring.go | ||
ring_test.go |