Bug 63981

Summary: False-positive warning logged when Registry.disableRegistry is called and the registry has already been disabled
Product: Tomcat 9 Reporter: Andy Wilkinson <andy.wilkinson>
Component: UtilAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED FIXED    
Severity: normal CC: pwebb
Priority: P2    
Version: 9.0.x   
Target Milestone: -----   
Hardware: PC   
OS: All   

Description Andy Wilkinson 2019-12-02 09:23:49 UTC
Calling org.apache.tomcat.util.modeler.Registry.disableRegistry() assigns an instance of NoDescriptorRegistry to the static registry field. Subsequent invocations then log a warning that states that the registry cannot be disabled as it has already been initialised. These feels like a false-positive to me when registry is an instance of NoDescriptorRegistry. To avoid the unwanted warning, could the check be changed to something like the following:

if (registry == null) {
    registry = new NoDescriptorRegistry();
} else if (!registry instanceof NoDescriptorRegistry) {
    log.warn(sm.getString("registry.noDisable"));
}

This would improve log output in integration tests using embedded Tomcat where Tomcat may be initialised multiple times.
Comment 1 Mark Thomas 2019-12-02 21:52:48 UTC
Thanks for the report and the suggested fix. Works for me.

Fixed in:
- master for 9.0.30 onwards
Comment 2 Andy Wilkinson 2019-12-03 09:05:42 UTC
Thanks, Mark. Much appreciated.