Nikita Amelchev created IGNITE-29223:
----------------------------------------

             Summary: Fix histogram metric bounds validation
                 Key: IGNITE-29223
                 URL: https://issues.apache.org/jira/browse/IGNITE-29223
             Project: Ignite
          Issue Type: Bug
            Reporter: Nikita Amelchev
            Assignee: Nikita Amelchev


{{MetricsMxBean#configureHistogramMetric}} and {{control.sh --metric 
--configure-histogram}} store histogram bounds in the distributed metastorage 
without checking them against the histogram type, so invalid bounds are 
accepted and then fail on every node, while control.sh rejects valid unsorted 
bounds of {{PageTimestampHistogram}}. Besides, stored bounds are not applied to 
{{PageTimestampHistogram}} when it is re-created on cluster activation, so its 
configuration is lost after deactivation.

Unsorted bounds of a regular histogram (assertions enabled), the configure call 
hangs:
{noformat}
java.lang.AssertionError
        at 
org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl$HistogramHolder.<init>(HistogramMetricImpl.java:133)
        at 
org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl.reset(HistogramMetricImpl.java:81)
        at 
org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl.bounds(HistogramMetricImpl.java:86)
        at 
org.apache.ignite.internal.processors.metric.GridMetricManager.onHistogramConfigChanged(GridMetricManager.java:562)
        at 
org.apache.ignite.internal.processors.metric.GridMetricManager$1.lambda$onReadyForRead$8(GridMetricManager.java:309)
        at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.notifyListeners(DistributedMetaStorageImpl.java:1385)
        at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.completeWrite(DistributedMetaStorageImpl.java:1180)
        at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.onUpdateMessage(DistributedMetaStorageImpl.java:1085)
        at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$3.onDiscovery0(GridDiscoveryManager.java:748)
{noformat}

Invalid bounds of {{PageTimestampHistogram}}, the configure call succeeds and 
every node logs:
{noformat}
[ERROR][disco-notifier-worker-#59][GridMetricManager] Error during histogram 
bounds reconfiguration
java.lang.IllegalArgumentException: Ouch! Argument is invalid: bounds.length > 1
        at 
org.apache.ignite.internal.util.GridArgumentCheck.ensure(GridArgumentCheck.java:111)
        at 
org.apache.ignite.internal.processors.metric.impl.PeriodicHistogramMetricImpl.bounds(PeriodicHistogramMetricImpl.java:114)
        at 
org.apache.ignite.internal.processors.metric.GridMetricManager.onHistogramConfigChanged(GridMetricManager.java:562)
        at 
org.apache.ignite.internal.processors.metric.GridMetricManager$1.lambda$onReadyForRead$8(GridMetricManager.java:309)
        at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.notifyListeners(DistributedMetaStorageImpl.java:1385)
{noformat}



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to