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)