Jelle Smits created ARTEMIS-4698:
------------------------------------

             Summary: MetricsManagers' remove method may cause a 
NullPointerException 
                 Key: ARTEMIS-4698
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4698
             Project: ActiveMQ Artemis
          Issue Type: Bug
    Affects Versions: 2.33.0, 2.32.0, 2.31.2, 2.31.1, 2.31.0, 2.30.0, 2.29.0, 
2.28.0, 2.27.1, 2.27.0
            Reporter: Jelle Smits


I recently switched from Artemis-server 2.19.1 to 2.31.1. From this point, I 
have been experiencing a lot the following errors: 

'AMQ224065: Failed to remove auto-created queue xyz'. The stack trace shows 
that this consistenly happens in the 'remove' call of the MetricsManager. More 
specifically, the 'logger.debug' statement which uses the 'removed' variable:
_java.lang.NullPointerException: Cannot invoke 
"io.micrometer.core.instrument.Meter.getId()" because "removed" is null at 
org.apache.activemq.artemis.core.server.metrics.MetricsManager.remove(MetricsManager.java:167)_
This did not happen in the previous version, as prior to 
[ARTEMIS-4020|https://issues.apache.org/jira/browse/ARTEMIS-4020], the log 
statement was conditional based on whether debug logging was enabled. 

 

While the issue at hand may be caused by my application (un)registering 
additional metrics on some queues, I feel the MeterRegistry should include a 
null-check for the value of removed, as by the JavaDoc of Micrometers' 
MeterRegistry, the meterRegistry.remove will return 'The removed meter, or null 
if the provided meter is not currently registered.' Also, as a 'null' from the 
MeterRegistry means that the metric no longer exists, as this is a remove call 
that should not be a blocking issue. 



I currently work around the issue using a class overload with an inline 
nullcheck:
{{logger.debug("Unregistered meter: {}", removed != null ? removed.getId() : 
"null");}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to