[ 
https://issues.apache.org/jira/browse/IGNITE-20201?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ilya Shishkov updated IGNITE-20201:
-----------------------------------
    Description: 
There are no metric name validation when we perform hitrate and historgam 
metrics configuration by means of control script. It can lead to impossibility 
to restart persistent cluster without clearing of metastorage.

*How to reproduce:*
 # Start persistent cluster
 # Just repeat commands from instructions: 
[https://ignite.apache.org/docs/latest/tools/control-script#metric-configure-command]
{noformat}
control.sh —metric —configure-histogram histogram-metric-name 1,2,3
control.sh —metric —configure-hitrate hitrate-metric-name 1000
{noformat}

 # Deactivate and restart cluster.
 # Start and activate cluster and nodes will fail with following error:
{noformat}
[12:44:18,713][SEVERE][main][IgniteKernal%myGrid1] Exception during start 
processors, node will be stopped and close connections
java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 19
  at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4606)
  at java.base/java.lang.String.substring(String.java:2709)
  at 
org.apache.ignite.internal.processors.metric.impl.MetricUtils.fromFullName(MetricUtils.java:72)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager.find(GridMetricManager.java:502)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager.onHitRateConfigChanged(GridMetricManager.java:462)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager.access$400(GridMetricManager.java:73)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager$1.lambda$onReadyForRead$0(GridMetricManager.java:269)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.InMemoryCachedDistributedMetaStorageBridge.iterate(InMemoryCachedDistributedMetaStorageBridge.java:87)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.iterate(DistributedMetaStorageImpl.java:542)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager$1.onReadyForRead(GridMetricManager.java:269)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.notifyReadyForRead(DistributedMetaStorageImpl.java:355)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.onMetaStorageReadyForRead(DistributedMetaStorageImpl.java:434)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.access$200(DistributedMetaStorageImpl.java:116)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl$2.onReadyForRead(DistributedMetaStorageImpl.java:259)
  at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.notifyMetastorageReadyForRead(GridCacheDatabaseSharedManager.java:430)
  at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.readMetastore(GridCacheDatabaseSharedManager.java:877)
  at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.notifyMetaStorageSubscribersOnReadyForRead(GridCacheDatabaseSharedManager.java:3094)
  at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1120)
  at 
org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1725)
  at 
org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
  at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1089)
  at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:599)
  at 
org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java:43)
  at 
org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:74)
{noformat}

Failure occurs when {{GridMetricManager}} tries to parse entries with incorrect 
metric names from metastorage:
{noformat}
metrics.histogram.histogram-metric-name                     [1, 2, 3]           
                                                                                
                    
metrics.hitrate.hitrate-metric-name                         1000
{noformat}
*Workaround:*
Clean metastorage.

  was:
There are no metric name validation when we perform hitrate and historgam 
metrics configuration by means of control script. It can lead to impossibility 
to restart persistent cluster.

*How to reproduce:*
 # Start persistent cluster
 # Just repeat commands from instructions: 
[https://ignite.apache.org/docs/latest/tools/control-script#metric-configure-command]
{noformat}
control.sh —metric —configure-histogram histogram-metric-name 1,2,3
control.sh —metric —configure-hitrate hitrate-metric-name 1000
{noformat}

 # Deactivate and restart cluster.
 # Start and activate cluster and nodes will fail with following error:
{noformat}
[12:44:18,713][SEVERE][main][IgniteKernal%myGrid1] Exception during start 
processors, node will be stopped and close connections
java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 19
  at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4606)
  at java.base/java.lang.String.substring(String.java:2709)
  at 
org.apache.ignite.internal.processors.metric.impl.MetricUtils.fromFullName(MetricUtils.java:72)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager.find(GridMetricManager.java:502)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager.onHitRateConfigChanged(GridMetricManager.java:462)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager.access$400(GridMetricManager.java:73)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager$1.lambda$onReadyForRead$0(GridMetricManager.java:269)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.InMemoryCachedDistributedMetaStorageBridge.iterate(InMemoryCachedDistributedMetaStorageBridge.java:87)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.iterate(DistributedMetaStorageImpl.java:542)
  at 
org.apache.ignite.internal.processors.metric.GridMetricManager$1.onReadyForRead(GridMetricManager.java:269)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.notifyReadyForRead(DistributedMetaStorageImpl.java:355)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.onMetaStorageReadyForRead(DistributedMetaStorageImpl.java:434)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.access$200(DistributedMetaStorageImpl.java:116)
  at 
org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl$2.onReadyForRead(DistributedMetaStorageImpl.java:259)
  at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.notifyMetastorageReadyForRead(GridCacheDatabaseSharedManager.java:430)
  at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.readMetastore(GridCacheDatabaseSharedManager.java:877)
  at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.notifyMetaStorageSubscribersOnReadyForRead(GridCacheDatabaseSharedManager.java:3094)
  at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1120)
  at 
org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1725)
  at 
org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
  at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1089)
  at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:599)
  at 
org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java:43)
  at 
org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:74)
{noformat}

Failure occurs when {{GridMetricManager}} tries to parse entries with incorrect 
metric names from metastorage:
{noformat}
metrics.histogram.histogram-metric-name                     [1, 2, 3]           
                                                                                
                    
metrics.hitrate.hitrate-metric-name                         1000
{noformat}
*Workaround:*
Clean metastorage.


> Node failure when incorrect names are used for hitrate and histogram metrics 
> configuration
> ------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-20201
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20201
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.15
>            Reporter: Ilya Shishkov
>            Priority: Critical
>
> There are no metric name validation when we perform hitrate and historgam 
> metrics configuration by means of control script. It can lead to 
> impossibility to restart persistent cluster without clearing of metastorage.
> *How to reproduce:*
>  # Start persistent cluster
>  # Just repeat commands from instructions: 
> [https://ignite.apache.org/docs/latest/tools/control-script#metric-configure-command]
> {noformat}
> control.sh —metric —configure-histogram histogram-metric-name 1,2,3
> control.sh —metric —configure-hitrate hitrate-metric-name 1000
> {noformat}
>  # Deactivate and restart cluster.
>  # Start and activate cluster and nodes will fail with following error:
> {noformat}
> [12:44:18,713][SEVERE][main][IgniteKernal%myGrid1] Exception during start 
> processors, node will be stopped and close connections
> java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 19
>   at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4606)
>   at java.base/java.lang.String.substring(String.java:2709)
>   at 
> org.apache.ignite.internal.processors.metric.impl.MetricUtils.fromFullName(MetricUtils.java:72)
>   at 
> org.apache.ignite.internal.processors.metric.GridMetricManager.find(GridMetricManager.java:502)
>   at 
> org.apache.ignite.internal.processors.metric.GridMetricManager.onHitRateConfigChanged(GridMetricManager.java:462)
>   at 
> org.apache.ignite.internal.processors.metric.GridMetricManager.access$400(GridMetricManager.java:73)
>   at 
> org.apache.ignite.internal.processors.metric.GridMetricManager$1.lambda$onReadyForRead$0(GridMetricManager.java:269)
>   at 
> org.apache.ignite.internal.processors.metastorage.persistence.InMemoryCachedDistributedMetaStorageBridge.iterate(InMemoryCachedDistributedMetaStorageBridge.java:87)
>   at 
> org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.iterate(DistributedMetaStorageImpl.java:542)
>   at 
> org.apache.ignite.internal.processors.metric.GridMetricManager$1.onReadyForRead(GridMetricManager.java:269)
>   at 
> org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.notifyReadyForRead(DistributedMetaStorageImpl.java:355)
>   at 
> org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.onMetaStorageReadyForRead(DistributedMetaStorageImpl.java:434)
>   at 
> org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.access$200(DistributedMetaStorageImpl.java:116)
>   at 
> org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl$2.onReadyForRead(DistributedMetaStorageImpl.java:259)
>   at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.notifyMetastorageReadyForRead(GridCacheDatabaseSharedManager.java:430)
>   at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.readMetastore(GridCacheDatabaseSharedManager.java:877)
>   at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.notifyMetaStorageSubscribersOnReadyForRead(GridCacheDatabaseSharedManager.java:3094)
>   at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1120)
>   at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1725)
>   at 
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
>   at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1089)
>   at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:599)
>   at 
> org.apache.ignite.internal.processors.platform.PlatformAbstractBootstrap.start(PlatformAbstractBootstrap.java:43)
>   at 
> org.apache.ignite.internal.processors.platform.PlatformIgnition.start(PlatformIgnition.java:74)
> {noformat}
> Failure occurs when {{GridMetricManager}} tries to parse entries with 
> incorrect metric names from metastorage:
> {noformat}
> metrics.histogram.histogram-metric-name                     [1, 2, 3]         
>                                                                               
>                         
> metrics.hitrate.hitrate-metric-name                         1000
> {noformat}
> *Workaround:*
> Clean metastorage.



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

Reply via email to