elsloo opened a new issue #7204:
URL: https://github.com/apache/trafficserver/issues/7204


   Log files previously rolled by ATS are not being removed when disk limits 
specified by the following parameters are reached:
   
   ```
   proxy.config.log.max_space_mb_for_logs
   proxy.config.log.max_space_mb_headroom
   ```
   
   ..and when `proxy.config.log.auto_delete_rolled_files` is set to 1.
   
   This issue could be related to #6932. The configuration works in ATS 8.x, 
but does not work in ATS 9. Both `rolling_max_count` and `rolling_min_count` 
are set to zero. Setting the former to `> 0` does not appear to have an effect, 
and the latter causes files to be rotated as expected, but prior to disk space 
exhaustion. It could be that the two settings influence the behavior in an 
unexpected manner, but our expectation is that the `max_space` parameters would 
work regardless of the min and max count settings.
   
   Additionally, it appears the `proxy.config.log.max_space_mb_for_orphan_log` 
setting was removed, and the concern is that logs created by a prior running 
instance of ATS may not be selected as a candidate for removal. I was unable to 
confirm if this is the case because ATS is not even deleting the files it 
rolled during its current run.
   
   In the following example, ATS 9 was put under load such that logging would 
eventually cross the thresholds specified by the above parameters. The 
parameters do cause ATS to detect that disk space has been exhausted, as seen 
in this sequence, but ATS is unable to find the logs it had just rolled itself. 
The log directory was filled by ATS' usual log rotation, creating a number of 
rotated files as expected and filling up the disk. That is where the log 
messages begin.
   
   ```
   ...manually removed all rolled files...
   
   NOTE: Logging space is no longer exhausted.
   NOTE: Logging disk is no longer low; access logging to local log directory 
resumed.
   
   ...load sent to ATS...
   ...ATS log files roll as expected...
   
   NOTE: Cannot clear space because there are no recognized Traffic Server 
rolled logs for auto deletion.
   NOTE: Logging space exhausted, any logs writing to local disk will be 
dropped!
   WARNING: Access logging to local log directory suspended - configured space 
allocation almost exhausted.
   NOTE: [Alarms::signalAlarm] Skipping Alarm: 'Access logging to local log 
directory suspended - configured space allocation almost exhausted.'
   NOTE: Cannot clear space because there are no recognized Traffic Server 
rolled logs for auto deletion.
   NOTE: Cannot clear space because there are no recognized Traffic Server 
rolled logs for auto deletion.
   ...continues until files are manually removed...
   ```
   
   The `LogConfig::update_space_used()` method is where the files are detected 
for removal. Logic wraps the call to `RolledLogDeleter`'s 
`consider_for_candidacy()` that could be failing, but 
`consider_for_candidacy()` also has a side effect where it's incrementing the 
candidate counter, that is then used later in `update_space_used()` via a call 
to `RolledLogDeleter`'s `has_candidates()` method. That method returns false 
and prints the above error message (Cannot clear space because there are no 
recognized Traffic Server rolled logs for auto deletion) We can infer that 
means that `consider_for_candidacy()` never executed, or it did, but didn't 
find a candidate, and didn't increment the candidate counter. 


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to