[jira] [Commented] (IGNITE-20145) Update maven surefire version

2023-08-11 Thread Nikita Amelchev (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753325#comment-17753325
 ] 

Nikita Amelchev commented on IGNITE-20145:
--

The {{-DforkMode=always}} property was removed in surefire plugin. For TC it is 
replaced to {{-DFORK_COUNT_SET_TO_1}}.

> Update maven surefire version
> -
>
> Key: IGNITE-20145
> URL: https://issues.apache.org/jira/browse/IGNITE-20145
> Project: Ignite
>  Issue Type: Task
>Reporter: Nikita Amelchev
>Assignee: Nikita Amelchev
>Priority: Major
>  Labels: ise
> Fix For: 2.16
>
>  Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> There are many useful updates in new versions, such as 
> [SUREFIRE-1426|https://issues.apache.org/jira/browse/SUREFIRE-1426]. This 
> fixes the exit code in case of a fork failure and is needed for proper 
> failure handling in CI tools.



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


[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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.

*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}
[19:47:26,981][SEVERE][main][IgniteKernal] Got exception while starting (will 
rollback startup routine).
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1967)
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.onHistogramConfigChanged(GridMetricManager.java:480)
at 
org.apache.ignite.internal.processors.metric.GridMetricManager.access$300(GridMetricManager.java:73)
at 
org.apache.ignite.internal.processors.metric.GridMetricManager$1.lambda$onReadyForRead$1(GridMetricManager.java:272)
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:272)
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.startConfigurations(IgnitionEx.java:983)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:889)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:808)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:678)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:647)
at org.apache.ignite.Ignition.start(Ignition.java:325)
at 
org.apache.ignite.startup.cmdline.CommandLineStartup.main(CommandLineStartup.java:365)

{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 without clearing of metastorage.

*How to reproduce:*
 # Start persistent cluster
 # Just repeat commands from instructions: 

[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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}

[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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.

*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}

[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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.

*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 incorrect entries 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 

[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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. 

*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}

*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 

[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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. 

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}

  was:
There are no metric name validation when we perform hitrate and historgam 
metrics configuration by means of control script, which 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 

[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


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

Ilya Shishkov updated IGNITE-20201:
---
Ignite Flags: Release Notes Required  (was: Docs Required,Release Notes 
Required)

> 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, which 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}



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


[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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, which 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}

  was:
There are no metric name validation when we perform hitrate and historgam 
metrics configuration by means of control script, which 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 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 

[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


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

Ilya Shishkov updated IGNITE-20201:
---
Priority: Critical  (was: Major)

> 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, which 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 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}



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


[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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, which 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 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}

  was:
There are no metric name validation when we perform hitrate and historgam 
metrics configuration by means of control script, which 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 cluster and nodes will fail with following error:
{nofromat}
[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 

[jira] [Created] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)
Ilya Shishkov created IGNITE-20201:
--

 Summary: 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: Improvement
Affects Versions: 2.15
Reporter: Ilya Shishkov


There are no metric name validation when we perform hitrate and historgam 
metrics configuration by means of control script, which 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 cluster and nodes will fail with following error:
{nofromat}
[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}



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


[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


 [ 
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, which 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 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}

  was:
There are no metric name validation when we perform hitrate and historgam 
metrics configuration by means of control script, which 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 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 

[jira] [Updated] (IGNITE-20201) Node failure when incorrect names are used for hitrate and histogram metrics configuration

2023-08-11 Thread Ilya Shishkov (Jira)


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

Ilya Shishkov updated IGNITE-20201:
---
Issue Type: Bug  (was: Improvement)

> 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: Major
>
> There are no metric name validation when we perform hitrate and historgam 
> metrics configuration by means of control script, which 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 cluster and nodes will fail with following error:
> {nofromat}
> [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}



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


[jira] [Commented] (IGNITE-20200) Muted tests on TC lead to failed builds

2023-08-11 Thread Pavel Tupitsyn (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753255#comment-17753255
 ] 

Pavel Tupitsyn commented on IGNITE-20200:
-

Merged to main: 027bdd16819ff8a6d811b6cba836652b28592e0b

> Muted tests on TC lead to failed builds
> ---
>
> Key: IGNITE-20200
> URL: https://issues.apache.org/jira/browse/IGNITE-20200
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> When a faulty unit test is muted on TC, it still gets executed by Gradle and 
> is interpreted as failed, which fails the whole unit tests build even though 
> TC treats this failure as muted. It is proposed to make Gradle ignore unit 
> test failures, which are instead going to be handled by TC.   



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


[jira] [Updated] (IGNITE-20200) Muted tests on TC lead to failed builds

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20200:

Fix Version/s: 3.0.0-beta2

> Muted tests on TC lead to failed builds
> ---
>
> Key: IGNITE-20200
> URL: https://issues.apache.org/jira/browse/IGNITE-20200
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> When a faulty unit test is muted on TC, it still gets executed by Gradle and 
> is interpreted as failed, which fails the whole unit tests build even though 
> TC treats this failure as muted. It is proposed to make Gradle ignore unit 
> test failures, which are instead going to be handled by TC.   



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


[jira] [Comment Edited] (IGNITE-20165) Revisit the configuration of thread pools used by JRaft

2023-08-11 Thread Mirza Aliev (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753233#comment-17753233
 ] 

Mirza Aliev edited comment on IGNITE-20165 at 8/11/23 2:51 PM:
---

By default, all executors are shared among the instance of Loza, meaning that 
all raft groups share executors.

Below I've represented all JRaft executors with short description and the 
number of threads  
||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3, workQueue == 1)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|


was (Author: maliev):
By default, all executors are shared among the instance of Loza, meaning that 
all groups share executors
||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3, workQueue == 1)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|

> Revisit the configuration of thread pools used by JRaft
> 

[jira] [Created] (IGNITE-20200) Muted tests on TC lead to failed builds

2023-08-11 Thread Aleksandr Polovtcev (Jira)
Aleksandr Polovtcev created IGNITE-20200:


 Summary: Muted tests on TC lead to failed builds
 Key: IGNITE-20200
 URL: https://issues.apache.org/jira/browse/IGNITE-20200
 Project: Ignite
  Issue Type: Task
Reporter: Aleksandr Polovtcev
Assignee: Aleksandr Polovtcev


When a faulty unit test is muted on TC, it still gets executed by Gradle and is 
interpreted as failed, which fails the whole unit tests build even though TC 
treats this failure as muted. It is proposed to make Gradle ignore unit test 
failures, which are instead going to be handled by TC.   



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


[jira] [Updated] (IGNITE-20200) Muted tests on TC lead to failed builds

2023-08-11 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-20200:
-
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Muted tests on TC lead to failed builds
> ---
>
> Key: IGNITE-20200
> URL: https://issues.apache.org/jira/browse/IGNITE-20200
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>
> When a faulty unit test is muted on TC, it still gets executed by Gradle and 
> is interpreted as failed, which fails the whole unit tests build even though 
> TC treats this failure as muted. It is proposed to make Gradle ignore unit 
> test failures, which are instead going to be handled by TC.   



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


[jira] [Updated] (IGNITE-20200) Muted tests on TC lead to failed builds

2023-08-11 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-20200:
-
Labels: ignite-3  (was: )

> Muted tests on TC lead to failed builds
> ---
>
> Key: IGNITE-20200
> URL: https://issues.apache.org/jira/browse/IGNITE-20200
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> When a faulty unit test is muted on TC, it still gets executed by Gradle and 
> is interpreted as failed, which fails the whole unit tests build even though 
> TC treats this failure as muted. It is proposed to make Gradle ignore unit 
> test failures, which are instead going to be handled by TC.   



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


[jira] [Comment Edited] (IGNITE-20165) Revisit the configuration of thread pools used by JRaft

2023-08-11 Thread Mirza Aliev (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753233#comment-17753233
 ] 

Mirza Aliev edited comment on IGNITE-20165 at 8/11/23 2:35 PM:
---

By default, all executors are shared among the instance of Loza, meaning that 
all groups share executors
||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3, workQueue == 1)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|


was (Author: maliev):
By default, all executors are shared among the instance of Loza, meaning that 
all groups share executors
||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|

> Revisit the configuration of thread pools used by JRaft
> ---
>
> Key: IGNITE-20165
> URL: 

[jira] [Updated] (IGNITE-20199) Do not return updating rebalance assignments futures in DistributionZoneRebalanceEngine#onUpdateReplicas

2023-08-11 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-20199:
-
Summary: Do not return updating rebalance assignments futures in 
DistributionZoneRebalanceEngine#onUpdateReplicas   (was: Do not return updating 
rebalance assignments future in 
DistributionZoneRebalanceEngine#onUpdateReplicas )

> Do not return updating rebalance assignments futures in 
> DistributionZoneRebalanceEngine#onUpdateReplicas 
> -
>
> Key: IGNITE-20199
> URL: https://issues.apache.org/jira/browse/IGNITE-20199
> Project: Ignite
>  Issue Type: Bug
>Reporter: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>
> Seems that the current logic in 
> {{DistributionZoneRebalanceEngine#onUpdateReplicas}} is not correct in terms 
> of futures chaining. Currently we block configuration notification thread 
> until all partitions would updates theirs rebalance assignments keys in 
> metastorage. 
>  
> {code:java}
> private CompletableFuture 
> onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
> ...
> ...
> return 
> distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
> zoneCfg.zoneId())
> .thenCompose(dataNodes -> {
> ...
> for (TableView tableCfg : tableViews) {
>...
> CompletableFuture[] partitionFutures = 
> RebalanceUtil.triggerAllTablePartitionsRebalance(...);
> tableFutures.add(allOf(partitionFutures));
> }
> return 
> allOf(tableFutures.toArray(CompletableFuture[]::new));
> });
> ...
> } {code}
> As a solution, we could just return completed future in the 
> {{DistributionZoneRebalanceEngine#onUpdateReplicas}} after we started 
> asynchronous logic of updating rebalance assignmnets.



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


[jira] [Updated] (IGNITE-20199) Do not return updating rebalance assignments future in DistributionZoneRebalanceEngine#onUpdateReplicas

2023-08-11 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-20199:
-
Summary: Do not return updating rebalance assignments future in 
DistributionZoneRebalanceEngine#onUpdateReplicas   (was: Do not chain updating 
rebalance assignments future in 
DistributionZoneRebalanceEngine#onUpdateReplicas )

> Do not return updating rebalance assignments future in 
> DistributionZoneRebalanceEngine#onUpdateReplicas 
> 
>
> Key: IGNITE-20199
> URL: https://issues.apache.org/jira/browse/IGNITE-20199
> Project: Ignite
>  Issue Type: Bug
>Reporter: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>
> Seems that the current logic in 
> {{DistributionZoneRebalanceEngine#onUpdateReplicas}} is not correct in terms 
> of futures chaining. Currently we block configuration notification thread 
> until all partitions would updates theirs rebalance assignments keys in 
> metastorage. 
>  
> {code:java}
> private CompletableFuture 
> onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
> ...
> ...
> return 
> distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
> zoneCfg.zoneId())
> .thenCompose(dataNodes -> {
> ...
> for (TableView tableCfg : tableViews) {
>...
> CompletableFuture[] partitionFutures = 
> RebalanceUtil.triggerAllTablePartitionsRebalance(...);
> tableFutures.add(allOf(partitionFutures));
> }
> return 
> allOf(tableFutures.toArray(CompletableFuture[]::new));
> });
> ...
> } {code}
> As a solution, we could just return completed future in the 
> {{DistributionZoneRebalanceEngine#onUpdateReplicas}} after we started 
> asynchronous logic of updating rebalance assignmnets.



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


[jira] [Updated] (IGNITE-20199) Do not chain updating rebalance assignments future in DistributionZoneRebalanceEngine#onUpdateReplicas

2023-08-11 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-20199:
-
Description: 
Seems that the current logic in 
{{DistributionZoneRebalanceEngine#onUpdateReplicas}} is not correct in terms of 
futures chaining. Currently we block configuration notification thread until 
all partitions would updates theirs rebalance assignments keys in metastorage. 

 
{code:java}
private CompletableFuture 
onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
...
...

return distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
zoneCfg.zoneId())
.thenCompose(dataNodes -> {
...

for (TableView tableCfg : tableViews) {
   ...
CompletableFuture[] partitionFutures = 
RebalanceUtil.triggerAllTablePartitionsRebalance(...);

tableFutures.add(allOf(partitionFutures));
}

return 
allOf(tableFutures.toArray(CompletableFuture[]::new));
});
...
} {code}
As a solution, we could just return completed future in the 
{{DistributionZoneRebalanceEngine#onUpdateReplicas}} after we started 
asynchronous logic of updating rebalance assignmnets.

  was:
After IGNITE-19506 was merged, it added the regression. 

Previously we haven't returned future, that updates rebalance pending keys, in 
{{{}DistributionZoneRebalanceEngine#onUpdateReplicas{}}}. It was done because 
otherwise we would block configuration notification thread until all partitions 
would updates theirs rebalance assignments keys in metastorage. 

 

Unfortunately, IGNITE-19506 has brought this blockage

 
{code:java}
private CompletableFuture 
onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
...
...

return distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
zoneCfg.zoneId())
.thenCompose(dataNodes -> {
...

for (TableView tableCfg : tableViews) {
   ...
CompletableFuture[] partitionFutures = 
RebalanceUtil.triggerAllTablePartitionsRebalance(...);

tableFutures.add(allOf(partitionFutures));
}

return 
allOf(tableFutures.toArray(CompletableFuture[]::new));
});
...
} {code}


> Do not chain updating rebalance assignments future in 
> DistributionZoneRebalanceEngine#onUpdateReplicas 
> ---
>
> Key: IGNITE-20199
> URL: https://issues.apache.org/jira/browse/IGNITE-20199
> Project: Ignite
>  Issue Type: Bug
>Reporter: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>
> Seems that the current logic in 
> {{DistributionZoneRebalanceEngine#onUpdateReplicas}} is not correct in terms 
> of futures chaining. Currently we block configuration notification thread 
> until all partitions would updates theirs rebalance assignments keys in 
> metastorage. 
>  
> {code:java}
> private CompletableFuture 
> onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
> ...
> ...
> return 
> distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
> zoneCfg.zoneId())
> .thenCompose(dataNodes -> {
> ...
> for (TableView tableCfg : tableViews) {
>...
> CompletableFuture[] partitionFutures = 
> RebalanceUtil.triggerAllTablePartitionsRebalance(...);
> tableFutures.add(allOf(partitionFutures));
> }
> return 
> allOf(tableFutures.toArray(CompletableFuture[]::new));
> });
> ...
> } {code}
> As a solution, we could just return completed future in the 
> {{DistributionZoneRebalanceEngine#onUpdateReplicas}} after we started 
> asynchronous logic of updating rebalance assignmnets.



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


[jira] [Commented] (IGNITE-20053) Empty data nodes are returned by data nodes engine

2023-08-11 Thread Kirill Gusakov (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20053?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753243#comment-17753243
 ] 

Kirill Gusakov commented on IGNITE-20053:
-

LGTM

> Empty data nodes are returned by data nodes engine
> --
>
> Key: IGNITE-20053
> URL: https://issues.apache.org/jira/browse/IGNITE-20053
> Project: Ignite
>  Issue Type: Bug
>Reporter: Denis Chudov
>Assignee: Alexander Lapin
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> There is a meta storage key called DISTRIBUTION_ZONES_LOGICAL_TOPOLOGY_KEY 
> and it is refreshed by topology listener on topology events and stores 
> logical topology. If the value stored by this key is null, then empty data 
> nodes are returned from data nodes engine on data nodes calculation for a 
> distribution zone. As a result, empty assignments are calculated for 
> partitions, which leads to exception described in IGNITE-19466.
> Some integration tests, for example, ItRebalanceDistributedTest are flaky 
> because of possible problems with value of 
> DISTRIBUTION_ZONES_LOGICAL_TOPOLOGY_KEY and empty data nodes calculated by 
> data nodes engine.
> Actually, the empty data nodes collection is a wrong result for this case 
> because the current logical topology is not empty.
> h3. UPD #1
> *1.* The reason for empty data nodes assertion is race between join 
> completion and thus firing logical topology updates and DZM start. Literally, 
> it's required to put 
> {code:java}
> nodes.stream().forEach(Node::waitWatches); {code}
> before
> {code:java}
> assertThat(
> allOf(nodes.get(0).cmgManager.onJoinReady(), 
> nodes.get(1).cmgManager.onJoinReady(), nodes.get(2).cmgManager.onJoinReady()),
> willCompleteSuccessfully()
> ); {code}
> in 
> org.apache.ignite.internal.configuration.storage.ItRebalanceDistributedTest#before.
>  
> *2.* However, that's not the whole story. We also faced 
> {code:java}
> Unable to initialize the cluster: null{code}
> because cmg init failed with TimeoutException because we start CMGManager 
> asynchronously, which is incorrect. So if we move cmgManager to 
> firstComponents that will solve the issue.
> {code:java}
> List firstComponents = List.of(
> vaultManager,
> nodeCfgMgr,
> clusterService,
> raftManager,
> cmgManager
> ); {code}
>  
> *3.* Still it's not the whole story. testTwoQueuedRebalances failed because 
> we didn't retrieved an expected stable assignments after table creation
> {code:java}
> await(nodes.get(0).tableManager.createTableAsync(
> "TBL1",
> ZONE_1_NAME,
> tblChanger -> SchemaConfigurationConverter.convert(schTbl1, 
> tblChanger)
> ));
> assertEquals(1, getPartitionClusterNodes(0, 0).size());{code}
> The reason for that is that assignments calculation is an async process, so 
> there are no guarantees that we will retrieve proper assignments right after 
> table creation completes. So we might substitute
> {code:java}
> assertEquals(1, getPartitionClusterNodes(0, 0).size());{code}
> with
> {code:java}
> assertTrue(waitForCondition(() -> getPartitionClusterNodes(0, 0).size() == 1, 
> 10_000));{code}
> Please pay attention that there are multiple places where we retrieve 
> assignments and expect them to be ready.



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


[jira] [Updated] (IGNITE-20199) Do not chain updating rebalance assignments future in DistributionZoneRebalanceEngine#onUpdateReplicas

2023-08-11 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-20199:
-
Description: 
After IGNITE-19506 was merged, it added the regression. 

Previously we haven't returned future, that updates rebalance pending keys, in 
{{{}DistributionZoneRebalanceEngine#onUpdateReplicas{}}}. It was done because 
otherwise we would block configuration notification thread until all partitions 
would updates theirs rebalance assignments keys in metastorage. 

 

Unfortunately, IGNITE-19506 has brought this blockage

 
{code:java}
private CompletableFuture 
onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
...
...

return distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
zoneCfg.zoneId())
.thenCompose(dataNodes -> {
...

for (TableView tableCfg : tableViews) {
   ...
CompletableFuture[] partitionFutures = 
RebalanceUtil.triggerAllTablePartitionsRebalance(...);

tableFutures.add(allOf(partitionFutures));
}

return 
allOf(tableFutures.toArray(CompletableFuture[]::new));
});
...
} {code}

  was:
After IGNITE-19506 was merged, it added the regression. 

Previously we haven't returned future, that updates rebalance pending keys, in 
{{{}DistributionZoneRebalanceEngine#onUpdateReplicas{}}}. It was done because 
otherwise we would block configuration notification thread until all partitions 
would updates theirs rebalance assignments keys in metastorage. 

 

Unfortunately, IGNITE-19506 has brought this blockage

 
{code:java}
private CompletableFuture 
onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
...
...

return distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
zoneCfg.zoneId())
.thenCompose(dataNodes -> {
...

for (TableView tableCfg : tableViews) {
   ...
CompletableFuture[] partitionFutures = 
RebalanceUtil.triggerAllTablePartitionsRebalance(...);

tableFutures.add(allOf(partitionFutures));
}

return 
allOf(tableFutures.toArray(CompletableFuture[]::new));
});
} finally {
busyLock.leaveBusy();
}
} {code}


> Do not chain updating rebalance assignments future in 
> DistributionZoneRebalanceEngine#onUpdateReplicas 
> ---
>
> Key: IGNITE-20199
> URL: https://issues.apache.org/jira/browse/IGNITE-20199
> Project: Ignite
>  Issue Type: Bug
>Reporter: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>
> After IGNITE-19506 was merged, it added the regression. 
> Previously we haven't returned future, that updates rebalance pending keys, 
> in {{{}DistributionZoneRebalanceEngine#onUpdateReplicas{}}}. It was done 
> because otherwise we would block configuration notification thread until all 
> partitions would updates theirs rebalance assignments keys in metastorage. 
>  
> Unfortunately, IGNITE-19506 has brought this blockage
>  
> {code:java}
> private CompletableFuture 
> onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
> ...
> ...
> return 
> distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
> zoneCfg.zoneId())
> .thenCompose(dataNodes -> {
> ...
> for (TableView tableCfg : tableViews) {
>...
> CompletableFuture[] partitionFutures = 
> RebalanceUtil.triggerAllTablePartitionsRebalance(...);
> tableFutures.add(allOf(partitionFutures));
> }
> return 
> allOf(tableFutures.toArray(CompletableFuture[]::new));
> });
> ...
> } {code}



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


[jira] [Created] (IGNITE-20199) Do not chain updating rebalance assignments future in DistributionZoneRebalanceEngine#onUpdateReplicas

2023-08-11 Thread Mirza Aliev (Jira)
Mirza Aliev created IGNITE-20199:


 Summary: Do not chain updating rebalance assignments future in 
DistributionZoneRebalanceEngine#onUpdateReplicas 
 Key: IGNITE-20199
 URL: https://issues.apache.org/jira/browse/IGNITE-20199
 Project: Ignite
  Issue Type: Bug
Reporter: Mirza Aliev


After IGNITE-19506 was merged, it added the regression. 

Previously we haven't returned future, that updates rebalance pending keys, in 
\{{DistributionZoneRebalanceEngine#onUpdateReplicas}}. It was done because 
otherwise we would block configuration notification thread until all partitions 
would updates theirs rebalance assignments keys in metastorage. 

 

Unfortunately, IGNITE-19506 has brought this blockage

 
{code:java}
private CompletableFuture 
onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
...
...

return distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
zoneCfg.zoneId())
.thenCompose(dataNodes -> {
...

for (TableView tableCfg : tableViews) {
   ...
CompletableFuture[] partitionFutures = 
RebalanceUtil.triggerAllTablePartitionsRebalance(
tableDescriptor,
zoneDescriptor,
dataNodes,
replicasCtx.storageRevision(),
metaStorageManager
);

tableFutures.add(allOf(partitionFutures));
}

return 
allOf(tableFutures.toArray(CompletableFuture[]::new));
});
} finally {
busyLock.leaveBusy();
}
} {code}



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


[jira] [Updated] (IGNITE-20199) Do not chain updating rebalance assignments future in DistributionZoneRebalanceEngine#onUpdateReplicas

2023-08-11 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-20199:
-
Description: 
After IGNITE-19506 was merged, it added the regression. 

Previously we haven't returned future, that updates rebalance pending keys, in 
{{{}DistributionZoneRebalanceEngine#onUpdateReplicas{}}}. It was done because 
otherwise we would block configuration notification thread until all partitions 
would updates theirs rebalance assignments keys in metastorage. 

 

Unfortunately, IGNITE-19506 has brought this blockage

 
{code:java}
private CompletableFuture 
onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
...
...

return distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
zoneCfg.zoneId())
.thenCompose(dataNodes -> {
...

for (TableView tableCfg : tableViews) {
   ...
CompletableFuture[] partitionFutures = 
RebalanceUtil.triggerAllTablePartitionsRebalance(...);

tableFutures.add(allOf(partitionFutures));
}

return 
allOf(tableFutures.toArray(CompletableFuture[]::new));
});
} finally {
busyLock.leaveBusy();
}
} {code}

  was:
After IGNITE-19506 was merged, it added the regression. 

Previously we haven't returned future, that updates rebalance pending keys, in 
\{{DistributionZoneRebalanceEngine#onUpdateReplicas}}. It was done because 
otherwise we would block configuration notification thread until all partitions 
would updates theirs rebalance assignments keys in metastorage. 

 

Unfortunately, IGNITE-19506 has brought this blockage

 
{code:java}
private CompletableFuture 
onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
...
...

return distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
zoneCfg.zoneId())
.thenCompose(dataNodes -> {
...

for (TableView tableCfg : tableViews) {
   ...
CompletableFuture[] partitionFutures = 
RebalanceUtil.triggerAllTablePartitionsRebalance(
tableDescriptor,
zoneDescriptor,
dataNodes,
replicasCtx.storageRevision(),
metaStorageManager
);

tableFutures.add(allOf(partitionFutures));
}

return 
allOf(tableFutures.toArray(CompletableFuture[]::new));
});
} finally {
busyLock.leaveBusy();
}
} {code}


> Do not chain updating rebalance assignments future in 
> DistributionZoneRebalanceEngine#onUpdateReplicas 
> ---
>
> Key: IGNITE-20199
> URL: https://issues.apache.org/jira/browse/IGNITE-20199
> Project: Ignite
>  Issue Type: Bug
>Reporter: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>
> After IGNITE-19506 was merged, it added the regression. 
> Previously we haven't returned future, that updates rebalance pending keys, 
> in {{{}DistributionZoneRebalanceEngine#onUpdateReplicas{}}}. It was done 
> because otherwise we would block configuration notification thread until all 
> partitions would updates theirs rebalance assignments keys in metastorage. 
>  
> Unfortunately, IGNITE-19506 has brought this blockage
>  
> {code:java}
> private CompletableFuture 
> onUpdateReplicas(ConfigurationNotificationEvent replicasCtx) {
> ...
> ...
> return 
> distributionZoneManager.dataNodes(replicasCtx.storageRevision(), 
> zoneCfg.zoneId())
> .thenCompose(dataNodes -> {
> ...
> for (TableView tableCfg : tableViews) {
>...
> CompletableFuture[] partitionFutures = 
> RebalanceUtil.triggerAllTablePartitionsRebalance(...);
> tableFutures.add(allOf(partitionFutures));
> }
> return 
> allOf(tableFutures.toArray(CompletableFuture[]::new));
> });
> } finally {
> busyLock.leaveBusy();
> }
> } {code}



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


[jira] [Comment Edited] (IGNITE-20165) Revisit the configuration of thread pools used by JRaft

2023-08-11 Thread Mirza Aliev (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753233#comment-17753233
 ] 

Mirza Aliev edited comment on IGNITE-20165 at 8/11/23 2:00 PM:
---

By default, all executors are shared among the instance of Loza, meaning that 
all groups share executors
||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|


was (Author: maliev):
||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|

> Revisit the configuration of thread pools used by JRaft
> ---
>
> Key: IGNITE-20165
> URL: https://issues.apache.org/jira/browse/IGNITE-20165
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtcev
>

[jira] [Comment Edited] (IGNITE-20165) Revisit the configuration of thread pools used by JRaft

2023-08-11 Thread Mirza Aliev (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753233#comment-17753233
 ] 

Mirza Aliev edited comment on IGNITE-20165 at 8/11/23 1:59 PM:
---

||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|


was (Author: maliev):
||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|

> Revisit the configuration of thread pools used by JRaft
> ---
>
> Key: IGNITE-20165
> URL: https://issues.apache.org/jira/browse/IGNITE-20165
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtcev
>Assignee: Vyacheslav Koptilin
>Priority: Major
>  Labels: ignite-3
>
> JRaft uses a bunch of thread pools to execute 

[jira] [Comment Edited] (IGNITE-20165) Revisit the configuration of thread pools used by JRaft

2023-08-11 Thread Mirza Aliev (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753233#comment-17753233
 ] 

Mirza Aliev edited comment on IGNITE-20165 at 8/11/23 1:58 PM:
---

||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus() (core == max)|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6 (core == max)|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80 (core == max/3)|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20) (core, max == Integer.MAX_VALUE)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20) (core, max == Integer.MAX_VALUE)|


was (Author: maliev):
||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus()|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20)|

> Revisit the configuration of thread pools used by JRaft
> ---
>
> Key: IGNITE-20165
> URL: https://issues.apache.org/jira/browse/IGNITE-20165
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtcev
>Assignee: Vyacheslav Koptilin
>Priority: Major
>  Labels: ignite-3
>
> JRaft uses a bunch of thread pools to execute its operations. Most of these 
> thread pools use the number of CPUs to determine the amount of threads they 
> can use. For example, as described in IGNITE-20080, having 64 cores led to 
> JRaft allocating 

[jira] [Updated] (IGNITE-19919) org.apache.ignite.sql.ResultSet#close should close implicit transaction if any

2023-08-11 Thread Pavel Pereslegin (Jira)


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

Pavel Pereslegin updated IGNITE-19919:
--
Fix Version/s: 3.0.0-beta2

> org.apache.ignite.sql.ResultSet#close should close implicit transaction if any
> --
>
> Key: IGNITE-19919
> URL: https://issues.apache.org/jira/browse/IGNITE-19919
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Alexander Lapin
>Assignee: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> At the current moment, the transaction will be closed only if the cursor has 
> read all the data:
> {code:java}
> org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl#requestNextAsync{code}
> in the case of an explicit ResultSet.close() call, the transaction will not 
> be closed.
>  
> Repoducerers within org.apache.ignite.internal.sql.api.ItSqlSynchronousApiTest
> {code:java}
> @Test
> public void resultSetCloseShouldFinishImplicitTransacion() throws 
> InterruptedException {
> sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
> for (int i = 0; i < ROW_COUNT; ++i) {
> sql("INSERT INTO TEST VALUES (?, ?)", i, i);
> }
> IgniteSql sql = igniteSql();
> Session ses = sql.sessionBuilder().defaultPageSize(2).build();
> ResultSet rs = ses.execute(null, "SELECT * FROM TEST");
> assertEquals(1, ((IgniteImpl) 
> CLUSTER_NODES.get(0)).txManager().pending());
> rs.close();
> assertEquals(0, ((IgniteImpl) 
> CLUSTER_NODES.get(0)).txManager().pending());
> }{code}
> and
> {code:java}
> @Test
> public void 
> resultSetCloseShouldFinishImplicitTransacionWithCursorTouchAfterClose() 
> throws InterruptedException {
> sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
> for (int i = 0; i < ROW_COUNT; ++i) {
> sql("INSERT INTO TEST VALUES (?, ?)", i, i);
> }
> IgniteSql sql = igniteSql();
> Session ses = sql.sessionBuilder().defaultPageSize(2).build();
> ResultSet rs = ses.execute(null, "SELECT * FROM TEST");
> assertEquals(1, ((IgniteImpl) 
> CLUSTER_NODES.get(0)).txManager().pending());
>     Thread.sleep(300); // ResultSetImpl fetches next page in background, wait 
> to it to complete to avoid flakiness.
>     rs.close();
>     assertThrowsWithCause(() -> rs.forEachRemaining(Object::hashCode), 
> CursorClosedException.class);
>     assertEquals(0, ((IgniteImpl) 
> CLUSTER_NODES.get(0)).txManager().pending());
> }{code}
> Please, pay attention, that 
> resultSetCloseShouldFinishImplicitTransacionWithCursorTouchAfterClose faisl 
> only if client is used as entry point, meaning within 
> ItSqlClientSynchronousApiTest only, but 
> resultSetCloseShouldFinishImplicitTransacion fails both for client and 
> server, meaning both for ItSqlClientSynchronousApiTest and 
> ItSqlSynchronousApiTest.



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


[jira] [Commented] (IGNITE-20035) IndexOutOfBoundsException when statement.SetMaxRows is set

2023-08-11 Thread Pavel Pereslegin (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753236#comment-17753236
 ] 

Pavel Pereslegin commented on IGNITE-20035:
---

[~mzhuravkov], [~amashenkov],
please take a look at the proposed changes.

> IndexOutOfBoundsException when statement.SetMaxRows is set
> --
>
> Key: IGNITE-20035
> URL: https://issues.apache.org/jira/browse/IGNITE-20035
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 3.0
>Reporter: Alexander Belyak
>Assignee: Pavel Pereslegin
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> If setMaxRows > count(*) - query fail with IndexOutOfBound exception.
> Reproducer:
>  
> {noformat}
> try (Connection connection = connect(); Statement statement = 
> connection.createStatement()) {
> JdbcSteps steps = new JdbcSteps(statement);
> steps.executeUpdateQuery("CREATE TABLE Person (id INT PRIMARY KEY, name 
> VARCHAR)", "Creating a table with two columns.");
> steps.executeUpdateQuery("INSERT INTO Person (id, name) VALUES (1, 
> 'John')", "Inserting a single record");
> statement.setMaxRows(25);
> ResultSet res = steps.executeQuery("SELECT * FROM Person", "Selecting all 
> the records from the table");
> while (res.next()) {
> log.info("{}, {}", res.getInt(1), res.getString(2));
> assertEquals(1, res.getInt(1));
> assertEquals("John", res.getString(2));
> }
> }{noformat}
> Returns:
>  
>  
> {noformat}
> Exception while executing query [query=SELECT * FROM Person]. Error 
> message:toIndex = 25
> java.sql.SQLException: Exception while executing query [query=SELECT * FROM 
> Person]. Error message:toIndex = 25
>     at 
> org.apache.ignite.internal.jdbc.proto.IgniteQueryErrorCode.createJdbcSqlException(IgniteQueryErrorCode.java:57)
>     at 
> org.apache.ignite.internal.jdbc.JdbcStatement.execute0(JdbcStatement.java:149)
>     at 
> org.apache.ignite.internal.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:108)
>     at 
> org.gridgain.ai3tests.tests.teststeps.JdbcSteps.executeQuery(JdbcSteps.java:50)
>     at 
> org.gridgain.ai3tests.tests.BasicOperationsTest.testSaveAndGetFromCache(BasicOperationsTest.java:41)
>     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
> Method)
>     at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>     at 
> org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
>     at 
> org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
>     at 
> org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
>     at 
> org.junit.jupiter.api.extension.InvocationInterceptor.interceptTestMethod(InvocationInterceptor.java:118)
>     at 
> org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
>     at 
> org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
>     at 
> org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
>     at 
> org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
>     at 
> org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
>     at 
> org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
>     at 
> org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
>     at 
> org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
>     at 
> org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
>     at 
> org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
>     at 
> org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
>     at 
> org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
>     at 
> org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
> 

[jira] [Commented] (IGNITE-20165) Revisit the configuration of thread pools used by JRaft

2023-08-11 Thread Mirza Aliev (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753233#comment-17753233
 ] 

Mirza Aliev commented on IGNITE-20165:
--

||Pool name||Description||Number of Threads||
|JRaft-Common-Executor|A pool for processing short-lived asynchronous tasks. 
Should never be blocked.|Utils.cpus()|
|JRaft-Node-Scheduler|A scheduled executor for running delayed or repeating 
tasks.|Math.min(Utils.cpus() * 3, 20)|
|JRaft-Request-Processor|A default pool for handling RAFT requests. Should 
never be blocked.|Utils.cpus() * 6|
|JRaft-Response-Processor|A default pool for handling RAFT responses. Should 
never be blocked.|80|
|JRaft-AppendEntries-Processor|A pool of single thread executors. Used only if 
a replication pipelining is enabled. Handles append entries requests and 
responses (used by the replication flow). Threads are started on demand. Each 
replication pair (leader-follower) uses dedicated single thread executor from 
the pool, so all messages between replication peer pairs are processed 
sequentially.|SystemPropertyUtil.getInt(
"jraft.append.entries.threads.send", Math.max(16, 
Ints.findNextPositivePowerOfTwo(cpus() * 2)));|
|NodeImpl-Disruptor|A striped disruptor for batching FSM (finite state machine) 
user tasks.|DEFAULT_STRIPES = Utils.cpus() * 2|
|ReadOnlyService-Disruptor|A striped disruptor for batching read requests 
before doing read index request.|DEFAULT_STRIPES = Utils.cpus() * 2|
|LogManager-Disruptor|A striped disruptor for delivering log entries to a 
storage.|DEFAULT_STRIPES = Utils.cpus() * 2|
|FSMCaller-Disruptor|A striped disruptor for FSM callbacks.|DEFAULT_STRIPES = 
Utils.cpus() * 2|
|SnapshotTimer|A timer for periodic snapshot creation.|Math.min(Utils.cpus() * 
3, 20)|
|ElectionTimer|A timer to handle election timeout on 
followers.|Math.min(Utils.cpus() * 3, 20)|
|VoteTimer|A timer to handle vote timeout when a leader was not confirmed by 
majority.|Math.min(Utils.cpus() * 3, 20)|
|StepDownTimer|A timer to process leader step down 
condition.|Math.min(Utils.cpus() * 3, 20)|

> Revisit the configuration of thread pools used by JRaft
> ---
>
> Key: IGNITE-20165
> URL: https://issues.apache.org/jira/browse/IGNITE-20165
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Polovtcev
>Assignee: Vyacheslav Koptilin
>Priority: Major
>  Labels: ignite-3
>
> JRaft uses a bunch of thread pools to execute its operations. Most of these 
> thread pools use the number of CPUs to determine the amount of threads they 
> can use. For example, as described in IGNITE-20080, having 64 cores led to 
> JRaft allocating around 600 threads. Even though these thread pools are 
> shared between all Raft nodes, this approach is clearly sub-optimal, because 
> it should take into account both the amount of nodes as well as the number of 
> processors. It may also be beneficial to revise the amount of thread pools 
> used and why they are needed and reduce their number, if possible.



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


[jira] [Comment Edited] (IGNITE-19919) org.apache.ignite.sql.ResultSet#close should close implicit transaction if any

2023-08-11 Thread Pavel Pereslegin (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-19919?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753230#comment-17753230
 ] 

Pavel Pereslegin edited comment on IGNITE-19919 at 8/11/23 1:45 PM:


[~mzhuravkov], thanks for the contribution!

Merged to the main branch 
([3efece824520e4345cdd89014ebe6b867c18442d|https://github.com/apache/ignite-3/commit/3efece824520e4345cdd89014ebe6b867c18442d]).


was (Author: xtern):
[~mzhuravkov], thanks for the contribution!

Merged to the main branch 
([3efece824520e4345cdd89014ebe6b867c18442d|https://github.com/apache/ignite-3/commit/3efece824520e4345cdd89014ebe6b867c18442d].

> org.apache.ignite.sql.ResultSet#close should close implicit transaction if any
> --
>
> Key: IGNITE-19919
> URL: https://issues.apache.org/jira/browse/IGNITE-19919
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Alexander Lapin
>Assignee: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> At the current moment, the transaction will be closed only if the cursor has 
> read all the data:
> {code:java}
> org.apache.ignite.internal.sql.engine.AsyncSqlCursorImpl#requestNextAsync{code}
> in the case of an explicit ResultSet.close() call, the transaction will not 
> be closed.
>  
> Repoducerers within org.apache.ignite.internal.sql.api.ItSqlSynchronousApiTest
> {code:java}
> @Test
> public void resultSetCloseShouldFinishImplicitTransacion() throws 
> InterruptedException {
> sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
> for (int i = 0; i < ROW_COUNT; ++i) {
> sql("INSERT INTO TEST VALUES (?, ?)", i, i);
> }
> IgniteSql sql = igniteSql();
> Session ses = sql.sessionBuilder().defaultPageSize(2).build();
> ResultSet rs = ses.execute(null, "SELECT * FROM TEST");
> assertEquals(1, ((IgniteImpl) 
> CLUSTER_NODES.get(0)).txManager().pending());
> rs.close();
> assertEquals(0, ((IgniteImpl) 
> CLUSTER_NODES.get(0)).txManager().pending());
> }{code}
> and
> {code:java}
> @Test
> public void 
> resultSetCloseShouldFinishImplicitTransacionWithCursorTouchAfterClose() 
> throws InterruptedException {
> sql("CREATE TABLE TEST(ID INT PRIMARY KEY, VAL0 INT)");
> for (int i = 0; i < ROW_COUNT; ++i) {
> sql("INSERT INTO TEST VALUES (?, ?)", i, i);
> }
> IgniteSql sql = igniteSql();
> Session ses = sql.sessionBuilder().defaultPageSize(2).build();
> ResultSet rs = ses.execute(null, "SELECT * FROM TEST");
> assertEquals(1, ((IgniteImpl) 
> CLUSTER_NODES.get(0)).txManager().pending());
>     Thread.sleep(300); // ResultSetImpl fetches next page in background, wait 
> to it to complete to avoid flakiness.
>     rs.close();
>     assertThrowsWithCause(() -> rs.forEachRemaining(Object::hashCode), 
> CursorClosedException.class);
>     assertEquals(0, ((IgniteImpl) 
> CLUSTER_NODES.get(0)).txManager().pending());
> }{code}
> Please, pay attention, that 
> resultSetCloseShouldFinishImplicitTransacionWithCursorTouchAfterClose faisl 
> only if client is used as entry point, meaning within 
> ItSqlClientSynchronousApiTest only, but 
> resultSetCloseShouldFinishImplicitTransacion fails both for client and 
> server, meaning both for ItSqlClientSynchronousApiTest and 
> ItSqlSynchronousApiTest.



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


[jira] [Commented] (IGNITE-20194) Calcite engine. Dependency common-codec required for some functions

2023-08-11 Thread Ignite TC Bot (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20194?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753227#comment-17753227
 ] 

Ignite TC Bot commented on IGNITE-20194:


{panel:title=Branch: [pull/10889/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/10889/head] Base: [master] : No new tests 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}{panel}
[TeamCity *-- Run :: All* 
Results|https://ci2.ignite.apache.org/viewLog.html?buildId=7295200buildTypeId=IgniteTests24Java8_RunAll]

> Calcite engine. Dependency common-codec required for some functions
> ---
>
> Key: IGNITE-20194
> URL: https://issues.apache.org/jira/browse/IGNITE-20194
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, ise
> Fix For: 2.16
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Some functions (md5, soundex) require common-codec dependency, but this 
> dependency is not included explicitly to dependencies list and doesn't added 
> to calcite library folder on build. Tests run with transitive dependencies 
> and don't trigger the problem. Queries fail only when run on Ignite started 
> from binary release package.



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


[jira] [Assigned] (IGNITE-20015) Sql. Introduce new distribution function

2023-08-11 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov reassigned IGNITE-20015:
-

Assignee: Andrey Mashenkov

> Sql. Introduce new distribution function
> 
>
> Key: IGNITE-20015
> URL: https://issues.apache.org/jira/browse/IGNITE-20015
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Konstantin Orlov
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
>
> To realize the full potential of sql engine in queries over node specific 
> views, we need to support new type of distribution function 
> ({{org.apache.ignite.internal.sql.engine.trait.DistributionFunction}}). The 
> semantic of this new function should be pretty strait forward: the column 
> this function refers to is actually an identity of the node containing the 
> data.



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


[jira] [Updated] (IGNITE-19789) Sql. Introduce RowSchema for RowFactory

2023-08-11 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-19789:
--
Fix Version/s: 3.0.0-beta2

> Sql. Introduce RowSchema for RowFactory
> ---
>
> Key: IGNITE-19789
> URL: https://issues.apache.org/jira/browse/IGNITE-19789
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Konstantin Orlov
>Assignee: Maksim Zhuravkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> There are three way to create 
> {{{}org.apache.ignite.internal.sql.engine.exec.RowHandler.RowFactory{}}}:
> {code:java}
> RowFactory factory(IgniteTypeFactory typeFactory, RelDataType rowType);
> RowFactory factory(IgniteTypeFactory typeFactory, List 
> fieldTypes);
> RowFactory factory(Type... types);
> {code}
> The first two create unnecessary dependency on {{calcite}} library, the last 
> one doesn't provide required type's parameters, like decimal scale, for 
> instance.
> Let's replace all three methods with a single {{{}RowFactory 
> factory(RowSchema schema){}}}, where {{RowSchema}} is a class that should be 
> introduced.
> h4. Implementation Notes
> Although {{org.apache.ignite.internal.schema.BinaryTupleSchemas}} might seem 
> like a good candidate on the role of RowSchema, it doesn't have exhaustive 
> type's support. Besides, introducing new type to binary tuple is much complex 
> procedure since it will affect every module. Thus, it's better to implement 
> distinct schema optimised for RowHandler|RowFactory use case.
> RowSchema should support complex/nested objects



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


[jira] [Assigned] (IGNITE-20198) .NET: Frequent failures in Plaform .NET (Core Linux) TC Project

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn reassigned IGNITE-20198:
---

Assignee: Pavel Tupitsyn

> .NET: Frequent failures in Plaform .NET (Core Linux) TC Project
> ---
>
> Key: IGNITE-20198
> URL: https://issues.apache.org/jira/browse/IGNITE-20198
> Project: Ignite
>  Issue Type: Bug
>  Components: platforms
>Affects Versions: 2.15
>Reporter: Andrey Khitrin
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET
> Fix For: 2.16
>
>
> * Out of memory: Java heap space 
> * Execution timeout
> * Flaky tests



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


[jira] [Updated] (IGNITE-20198) .NET: Frequent failures in Plaform .NET (Core Linux) TC Project

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20198:

Component/s: platforms
 (was: .NET)

> .NET: Frequent failures in Plaform .NET (Core Linux) TC Project
> ---
>
> Key: IGNITE-20198
> URL: https://issues.apache.org/jira/browse/IGNITE-20198
> Project: Ignite
>  Issue Type: Bug
>  Components: platforms
>Affects Versions: 2.15
>Reporter: Andrey Khitrin
>Priority: Major
>  Labels: .NET
>
> * Out of memory: Java heap space 
> * Execution timeout
> * Flaky tests



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


[jira] [Updated] (IGNITE-20198) .NET: Frequent failures in Plaform .NET (Core Linux) TC Project

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20198:

Labels: .NET  (was: )

> .NET: Frequent failures in Plaform .NET (Core Linux) TC Project
> ---
>
> Key: IGNITE-20198
> URL: https://issues.apache.org/jira/browse/IGNITE-20198
> Project: Ignite
>  Issue Type: Bug
>  Components: .NET
>Affects Versions: 2.15
>Reporter: Andrey Khitrin
>Priority: Major
>  Labels: .NET
>
> * Out of memory: Java heap space 
> * Execution timeout
> * Flaky tests



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


[jira] [Updated] (IGNITE-20198) .NET: Frequent failures in Plaform .NET (Core Linux) TC Project

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20198:

Fix Version/s: 2.16

> .NET: Frequent failures in Plaform .NET (Core Linux) TC Project
> ---
>
> Key: IGNITE-20198
> URL: https://issues.apache.org/jira/browse/IGNITE-20198
> Project: Ignite
>  Issue Type: Bug
>  Components: platforms
>Affects Versions: 2.15
>Reporter: Andrey Khitrin
>Priority: Major
>  Labels: .NET
> Fix For: 2.16
>
>
> * Out of memory: Java heap space 
> * Execution timeout
> * Flaky tests



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


[jira] [Updated] (IGNITE-20198) .NET: Frequent failures in Plaform .NET (Core Linux) TC Project

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20198:

Summary: .NET: Frequent failures in Plaform .NET (Core Linux) TC Project  
(was: .NET Frequent failures in Plaform .NET (Core Linux) TC Project)

> .NET: Frequent failures in Plaform .NET (Core Linux) TC Project
> ---
>
> Key: IGNITE-20198
> URL: https://issues.apache.org/jira/browse/IGNITE-20198
> Project: Ignite
>  Issue Type: Bug
>  Components: .NET
>Affects Versions: 2.15
>Reporter: Andrey Khitrin
>Priority: Major
>
> * Out of memory: Java heap space 
> * Execution timeout
> * Flaky tests



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


[jira] [Updated] (IGNITE-20197) .NET: Thin 3.0: Perf: Excessive dictionary lookups by GetFieldByColumnName usages

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20197:

Summary: .NET: Thin 3.0: Perf: Excessive dictionary lookups by 
GetFieldByColumnName usages  (was: .NET: Thin 3.0: Excessive dictionary lookups 
by GetFieldByColumnName usages)

> .NET: Thin 3.0: Perf: Excessive dictionary lookups by GetFieldByColumnName 
> usages
> -
>
> Key: IGNITE-20197
> URL: https://issues.apache.org/jira/browse/IGNITE-20197
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms, thin client
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Trivial
>  Labels: .NET, ignite-3
> Fix For: 3.0.0-beta2
>
>
> All usages of 
> [ReflectionUtils.GetFieldByColumnName|https://github.com/apache/ignite-3/blob/64f8248fe52a50e09eace2eea7b7308a7c8f6eaf/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/ReflectionUtils.cs#L53]
>  are within loops.
> As a result, *GetFieldsByColumnName(type)* is called for the same type 
> multiple times. 
> We should remove *ReflectionUtils.GetFieldByColumnName* to avoid this pitfall 
> and perform the first lookup outside of the loop.



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


[jira] [Updated] (IGNITE-20197) .NET: Thin 3.0: Excessive dictionary lookups by GetFieldByColumnName usages

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20197:

Description: 
All usages of 
[ReflectionUtils.GetFieldByColumnName|https://github.com/apache/ignite-3/blob/64f8248fe52a50e09eace2eea7b7308a7c8f6eaf/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/ReflectionUtils.cs#L53]
 are within loops.

As a result, *GetFieldsByColumnName(type)* is called for the same type multiple 
times. 

We should remove *ReflectionUtils.GetFieldByColumnName* to avoid this pitfall 
and perform the first lookup outside of the loop.

  was:All callers of 


> .NET: Thin 3.0: Excessive dictionary lookups by GetFieldByColumnName usages
> ---
>
> Key: IGNITE-20197
> URL: https://issues.apache.org/jira/browse/IGNITE-20197
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms, thin client
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Trivial
>  Labels: .NET, ignite-3
> Fix For: 3.0.0-beta2
>
>
> All usages of 
> [ReflectionUtils.GetFieldByColumnName|https://github.com/apache/ignite-3/blob/64f8248fe52a50e09eace2eea7b7308a7c8f6eaf/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/ReflectionUtils.cs#L53]
>  are within loops.
> As a result, *GetFieldsByColumnName(type)* is called for the same type 
> multiple times. 
> We should remove *ReflectionUtils.GetFieldByColumnName* to avoid this pitfall 
> and perform the first lookup outside of the loop.



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


[jira] [Created] (IGNITE-20198) .NET Frequent failures in Plaform .NET (Core Linux) TC Project

2023-08-11 Thread Andrey Khitrin (Jira)
Andrey Khitrin created IGNITE-20198:
---

 Summary: .NET Frequent failures in Plaform .NET (Core Linux) TC 
Project
 Key: IGNITE-20198
 URL: https://issues.apache.org/jira/browse/IGNITE-20198
 Project: Ignite
  Issue Type: Bug
  Components: .NET
Affects Versions: 2.15
Reporter: Andrey Khitrin


* Out of memory: Java heap space 
* Execution timeout
* Flaky tests



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


[jira] [Updated] (IGNITE-20197) .NET: Thin 3.0: Excessive dictionary lookups by GetFieldByColumnName usages

2023-08-11 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-20197:

Description: All callers of 

> .NET: Thin 3.0: Excessive dictionary lookups by GetFieldByColumnName usages
> ---
>
> Key: IGNITE-20197
> URL: https://issues.apache.org/jira/browse/IGNITE-20197
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms, thin client
>Affects Versions: 3.0.0-beta1
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Trivial
>  Labels: .NET, ignite-3
> Fix For: 3.0.0-beta2
>
>
> All callers of 



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


[jira] [Created] (IGNITE-20197) .NET: Thin 3.0: Excessive dictionary lookups by GetFieldByColumnName usages

2023-08-11 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-20197:
---

 Summary: .NET: Thin 3.0: Excessive dictionary lookups by 
GetFieldByColumnName usages
 Key: IGNITE-20197
 URL: https://issues.apache.org/jira/browse/IGNITE-20197
 Project: Ignite
  Issue Type: Improvement
  Components: platforms, thin client
Affects Versions: 3.0.0-beta1
Reporter: Pavel Tupitsyn
Assignee: Pavel Tupitsyn
 Fix For: 3.0.0-beta2






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


[jira] [Created] (IGNITE-20196) Sql. Review list of reserver keywords

2023-08-11 Thread Konstantin Orlov (Jira)
Konstantin Orlov created IGNITE-20196:
-

 Summary: Sql. Review list of reserver keywords
 Key: IGNITE-20196
 URL: https://issues.apache.org/jira/browse/IGNITE-20196
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Konstantin Orlov
Assignee: Konstantin Orlov


IGNITE-19759 introduces some refactoring to the parser configuration: reserved 
keywords are revised and parser is configured with defaults defined in 
default_configuration, which makes config.fmpp a bit cleaner.

Let's port all these changes to Ignite-3.



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


[jira] [Resolved] (IGNITE-18989) Design table management flow (part 2)

2023-08-11 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin resolved IGNITE-18989.
--
Resolution: Won't Do

> Design table management flow (part 2)
> -
>
> Key: IGNITE-18989
> URL: https://issues.apache.org/jira/browse/IGNITE-18989
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> After making the diagram of current flow, we should design the new flow and a 
> plan for descomposition of TableManager by different components having more 
> narrow responsibility.



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


[jira] [Commented] (IGNITE-20189) Prepare existing tests for the distributed zone to switch to the catalog #2

2023-08-11 Thread Roman Puchkovskiy (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753135#comment-17753135
 ] 

Roman Puchkovskiy commented on IGNITE-20189:


The patch looks good to me

> Prepare existing tests for the distributed zone to switch to the catalog #2
> ---
>
> Key: IGNITE-20189
> URL: https://issues.apache.org/jira/browse/IGNITE-20189
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> During IGNITE-20114, it was discovered that the tests used zone IDs as 
> constants, which is not the right solution, and also complicates the switch 
> of these tests to the catalog.
> We need to take the zone ID from the configuration.



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


[jira] [Resolved] (IGNITE-20168) MultiActorPlacementDriverTest#testLeaseProlong is flaky

2023-08-11 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin resolved IGNITE-20168.
--
Resolution: Cannot Reproduce

> MultiActorPlacementDriverTest#testLeaseProlong is flaky
> ---
>
> Key: IGNITE-20168
> URL: https://issues.apache.org/jira/browse/IGNITE-20168
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Denis Chudov
>Priority: Major
>  Labels: ignite-3
> Attachments: _Integration_Tests_Run_All_Other_13189.log.zip, test.log
>
>
> TC run: 
> [https://ci.ignite.apache.org/buildConfiguration/ApacheIgnite3xGradle_Test_RunAllTests/7412161?hideProblemsFromDependencies=false=false+Inspection=true=true=true=true]
> For some reason, lease was not created within timeout:
>  
> {code:java}
> [07:38:49]F:  
> [org.apache.ignite.internal.placementdriver.MultiActorPlacementDriverTest.testLeaseProlong()]
> org.opentest4j.AssertionFailedError: expected:  but was:
> 
> [07:38:49]F:  
> [org.apache.ignite.internal.placementdriver.MultiActorPlacementDriverTest.testLeaseProlong()]
> org.opentest4j.AssertionFailedError: expected:  but was:
> 
>   at
> app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
>   at
> app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
>   at
> app//org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:63)
>   at
> app//org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:36)
>   at
> app//org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:31)
>   at
> app//org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:180)
>   at
> app//org.apache.ignite.internal.placementdriver.MultiActorPlacementDriverTest.checkLeaseCreated(MultiActorPlacementDriverTest.java:571)
>   at
> app//org.apache.ignite.internal.placementdriver.MultiActorPlacementDriverTest.testLeaseProlong(MultiActorPlacementDriverTest.java:368)
>   at
> java.base@11.0.17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>   at
> java.base@11.0.17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at
> java.base@11.0.17/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at
> java.base@11.0.17/java.lang.reflect.Method.invoke(Method.java:566)
>   at
> app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
>   at
> app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
>   at
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
>   at
> app//org.junit.jupiter.engine.extension.SameThreadTimeoutInvocation.proceed(SameThreadTimeoutInvocation.java:45)
>   at
> app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
>   at
> app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
>   at
> app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
>   at
> app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
>   at
> app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
>   at
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
>   at
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
>   at
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
>   at
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
>   at
> app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
>   at
> app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
>   at
> app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217)
>   at
> app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
>   at
> app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
>   at
> 

[jira] [Assigned] (IGNITE-19227) Wait for schema awailability out of JRaft threads

2023-08-11 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy reassigned IGNITE-19227:
--

Assignee: Roman Puchkovskiy

> Wait for schema awailability out of JRaft threads
> -
>
> Key: IGNITE-19227
> URL: https://issues.apache.org/jira/browse/IGNITE-19227
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: iep-98, ignite-3
>
> According to 
> [https://cwiki.apache.org/confluence/display/IGNITE/IEP-98%3A+Schema+Synchronization#IEP98:SchemaSynchronization-Waitingforsafetimeinthepast]
>  , we might need to wait for schema availability when fetching a schema. If 
> such waits happen inside a PartitionListener, JRaft threads might be blocked 
> for a noticeable amount of time (maybe even seconds). We should avoid this.
> h3. In RW transactions
> When a primary node is going to process a request, it waits till it has all 
> the schema versions for the corresponding timestamp (beginTs or commitTs) Top 
> (i.e. that MS SafeTime >= Top). {*}The wait happens outside of JRaft 
> threads{*}. Then it obtains the global schema revision SR of the latest 
> schema update that is not later than the corresponding timestamp. It then 
> builds a command (putting that SR inside) and submits it to RAFT.
> When an AppendEntriesRequest is built, Replicator inspects all the entries it 
> includes in it, extracts SRs from each of them, takes max of them (as MSR, 
> for ‘max schema revision’) and puts it in the AppendEntriesRequest.
> When the request is processed by a follower/learner, it compares the MSR from 
> the request with its locally known MSR (in the Catalog). If the request’s MSR 
> > local MSR, then the request is rejected (with reason EBUSY). It will be 
> retried by the leader after some time. As an optimization, we might wait for 
> some time in hope that the local MSR catches up with the request’s MSR.
> As we need an additional field in AppendEntriesRequest that will only be used 
> by partition groups, we could add a generic container for properties to this 
> interface, like Map extras().
> To extract the SR from a command, we might just deserialize it completely, 
> but this requires a lot of work that is not necessary. We might serialize 
> commands having SR in a special way (putting SR in the very first bytes of 
> the message) to make its retrieval effective.
> As the primary has already made sure that it has the schema versions needed 
> to execute the command, no waits will be needed on the primary node while 
> executing the RAFT command.
> As secondaries/learners refuse AppendEntries which they cannot execute 
> waitless, they will not have to wait at all in JRaft threads.
> A case when the RAFT leader is not collocated with the primary is possible. 
> We can add the same validation for ActionRequests: pass the required SR 
> inside an ActionRequest, validate it in ActionRequestProcessor and reject 
> requests having SR above the local MSR.
> h3. In RO transactions
> When processing an RO transaction, we just wait for MS SafeTime. This is made 
> out of RAFT, so no special measures are needed.



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


[jira] [Commented] (IGNITE-20178) Introduce param-free IgniteInternalFuture.listen(() -> {}) in addition to .listen((fut) -> {}) to avoid ignored params

2023-08-11 Thread Ignite TC Bot (Jira)


[ 
https://issues.apache.org/jira/browse/IGNITE-20178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17753107#comment-17753107
 ] 

Ignite TC Bot commented on IGNITE-20178:


{panel:title=Branch: [pull/10885/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
{panel:title=Branch: [pull/10885/head] Base: [master] : No new tests 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}{panel}
[TeamCity *-- Run :: All* 
Results|https://ci2.ignite.apache.org/viewLog.html?buildId=7295033buildTypeId=IgniteTests24Java8_RunAll]

> Introduce param-free IgniteInternalFuture.listen(() -> {}) in addition to 
> .listen((fut) -> {}) to avoid ignored params
> --
>
> Key: IGNITE-20178
> URL: https://issues.apache.org/jira/browse/IGNITE-20178
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Anton Vinogradov
>Assignee: Anton Vinogradov
>Priority: Major
> Fix For: 2.16
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>




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


[jira] [Created] (IGNITE-20195) Long fsync of Raft log storage

2023-08-11 Thread Denis Chudov (Jira)
Denis Chudov created IGNITE-20195:
-

 Summary: Long fsync of Raft log storage
 Key: IGNITE-20195
 URL: https://issues.apache.org/jira/browse/IGNITE-20195
 Project: Ignite
  Issue Type: Bug
Reporter: Denis Chudov


Under intensive transactional load (see test [1]) the duration of fsync of Raft 
log storage [2] can exceed 1 second on local test runs.

[1] ItTxDistributedTestThreeNodesThreeReplicas#testBalance

[2] RocksDbSharedLogStorage#commitWriteBatch



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


[jira] [Assigned] (IGNITE-20186) [Ignite Website] Add Upcoming Events

2023-08-11 Thread Erlan Aytpaev (Jira)


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

Erlan Aytpaev reassigned IGNITE-20186:
--

Assignee: Erlan Aytpaev

> [Ignite Website] Add Upcoming Events
> 
>
> Key: IGNITE-20186
> URL: https://issues.apache.org/jira/browse/IGNITE-20186
> Project: Ignite
>  Issue Type: Task
>  Components: website
>Reporter: Evgenia
>Assignee: Erlan Aytpaev
>Priority: Trivial
>
> Update [Apache Ignite Events - Meetups, Summit, 
> Conference|https://ignite.apache.org/events.html#upcoming] page with upcoming 
> talks.
>  
> 1) Event: Community over code, Halifax, Canada, October 9
> Talk Title - Enhancing Apache Ignite 3.0 with the Power of Open-Source
> Speaker - Stanislav Lukyanov
> Link - [Schedule List – Community Over 
> Code|https://communityovercode.org/schedule-list/#BDC006]
> 2)  Event: Community over code, Halifax, Canada, October 8
> Scalable Distributed Computing with Groovy Using Apache Ignite
> Jeremy Meyer
> [Schedule List – Community Over 
> Code|https://communityovercode.org/schedule-list/#GR008]
> 3) Event: Community over code, Halifax, Canada, October 8 
> Whiskey Clustering with Apache Groovy and Apache Ignite
> Paul King
> [Schedule List – Community Over 
> Code|https://communityovercode.org/schedule-list/#GR007]



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