bneradt commented on issue #7204:
URL: https://github.com/apache/trafficserver/issues/7204#issuecomment-697947835


   I see what is happening now. When a config reload happens, this is what 
takes place (among a lot of other stuff, of course, this is just what is 
relevant to this bug):
   
   1. `Log::change_configuration` creates a new LogConfig object and 
initializes it from the old one:  
[Log.cc:117](https://github.com/apache/trafficserver/blob/bd089772b735bc374c0f0f4fedccabd1e6a30cda/proxy/logging/Log.cc#L117)
   1. In that process of initializing the new LogConfig, LogObject instances 
are created from the logging.yaml file. Each of those instances dutifully try 
to register themselves for auto deletion in `LogObject::_setup_rolling` 
([LogObject.cc:692](https://github.com/apache/trafficserver/blob/bd089772b735bc374c0f0f4fedccabd1e6a30cda/proxy/logging/LogObject.cc#L692))
 via `Log::config->register_rolled_log_auto_delete(m_basename, m_min_rolled);`
   1. That Log::config is a global reference that has not yet been set to the 
new LogConfig object, however. It will be updated later in Log.cc after the 
init() call from step 1 completes at 
[Log.cc:120](https://github.com/apache/trafficserver/blob/bd089772b735bc374c0f0f4fedccabd1e6a30cda/proxy/logging/Log.cc#L120),
 but that's too late for the LogObject's auto delete registration.
   
   Thus the old Log::config gets registered for auto deletion with the new 
logging.yaml LogObject instances instead and the new LogConfig. As a side note, 
traffic.out, manager.out, etc. are registered by LogConfig itself, so that is 
why they were still properly handled after a reload. But none of the 
logging.yaml objects persist across a reload.
   
   I believe this can be easily resolved in the LogConfig::init() function by 
copying over the old RolledLogDeleter to the new config.


----------------------------------------------------------------
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