[jira] [Updated] (IGNITE-12946) Add description to MBeans

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12946:

Labels: IEP-35  (was: )

> Add description to MBeans
> -
>
> Key: IGNITE-12946
> URL: https://issues.apache.org/jira/browse/IGNITE-12946
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.8
>Reporter: Denis A. Magda
>Priority: Major
>  Labels: IEP-35
>
> Presently, application developers will see hundreds of metrics once connect 
> through JMX and it will be hard for them to sort out the valuable ones.
> The documentation can do a great job outlining the right ones but we can also 
> add descriptions to MXBeans explaining what each metric reports.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12946) Add description to MBeans

2020-04-24 Thread Denis A. Magda (Jira)
Denis A. Magda created IGNITE-12946:
---

 Summary: Add description to MBeans
 Key: IGNITE-12946
 URL: https://issues.apache.org/jira/browse/IGNITE-12946
 Project: Ignite
  Issue Type: Improvement
Affects Versions: 2.8
Reporter: Denis A. Magda


Presently, application developers will see hundreds of metrics once connect 
through JMX and it will be hard for them to sort out the valuable ones.

The documentation can do a great job outlining the right ones but we can also 
add descriptions to MXBeans explaining what each metric reports.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12945) Put Ignite MBeans under a proper path

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12945:

Labels: IEP-35  (was: )

> Put Ignite MBeans under a proper path
> -
>
> Key: IGNITE-12945
> URL: https://issues.apache.org/jira/browse/IGNITE-12945
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.8
>Reporter: Denis A. Magda
>Priority: Major
>  Labels: IEP-35
>
> Presently, Ignite MBeans are listed under {{org.apache.{node_id}} path but 
> should be rather placed under {{org.apache.ignite.{node_id}}}.
> Most likely we can do it only for Ignite 3.0 to preserve backward 
> compatibility.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12945) Put Ignite MBeans under a proper path

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12945:

Description: 
Presently, Ignite MBeans are listed under {{org.apache.node_id}} path but 
should be rather placed under {{org.apache.ignite.node_id}}.

Most likely we can do it only for Ignite 3.0 to preserve backward compatibility.

  was:
Presently, Ignite MBeans are listed under {{org.apache.{node_id}} path but 
should be rather placed under {{org.apache.ignite.{node_id}}}.

Most likely we can do it only for Ignite 3.0 to preserve backward compatibility.


> Put Ignite MBeans under a proper path
> -
>
> Key: IGNITE-12945
> URL: https://issues.apache.org/jira/browse/IGNITE-12945
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.8
>Reporter: Denis A. Magda
>Priority: Major
>  Labels: IEP-35
>
> Presently, Ignite MBeans are listed under {{org.apache.node_id}} path but 
> should be rather placed under {{org.apache.ignite.node_id}}.
> Most likely we can do it only for Ignite 3.0 to preserve backward 
> compatibility.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12945) Put Ignite MBeans under a proper path

2020-04-24 Thread Denis A. Magda (Jira)
Denis A. Magda created IGNITE-12945:
---

 Summary: Put Ignite MBeans under a proper path
 Key: IGNITE-12945
 URL: https://issues.apache.org/jira/browse/IGNITE-12945
 Project: Ignite
  Issue Type: Task
Affects Versions: 2.8
Reporter: Denis A. Magda


Presently, Ignite MBeans are listed under {{org.apache.{node_id}} path but 
should be rather placed under {{org.apache.ignite.{node_id}}}.

Most likely we can do it only for Ignite 3.0 to preserve backward compatibility.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12944) Remove additional parameters required for collection of some metrics

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12944:

Labels: IEP-35  (was: )

> Remove additional parameters required for collection of some metrics
> 
>
> Key: IGNITE-12944
> URL: https://issues.apache.org/jira/browse/IGNITE-12944
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.8
>Reporter: Denis A. Magda
>Priority: Major
>  Labels: IEP-35
>
> For some of the metrics, it won't be enough to create an exporter to enable 
> their collection. For instance, data region and cache APIs require to turn on 
> additional parameters:
> * 
> https://apacheignite.readme.io/docs/memory-metrics#enabling-data-region-metrics
> * https://apacheignite.readme.io/docs/cache-metrics#enabling-cache-metrics
> We should remove such requirements after 
> https://issues.apache.org/jira/browse/IGNITE-11927 is completed.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12944) Remove additional parameters required for collection of some metrics

2020-04-24 Thread Denis A. Magda (Jira)
Denis A. Magda created IGNITE-12944:
---

 Summary: Remove additional parameters required for collection of 
some metrics
 Key: IGNITE-12944
 URL: https://issues.apache.org/jira/browse/IGNITE-12944
 Project: Ignite
  Issue Type: Task
Affects Versions: 2.8
Reporter: Denis A. Magda


For some of the metrics, it won't be enough to create an exporter to enable 
their collection. For instance, data region and cache APIs require to turn on 
additional parameters:
* 
https://apacheignite.readme.io/docs/memory-metrics#enabling-data-region-metrics
* https://apacheignite.readme.io/docs/cache-metrics#enabling-cache-metrics

We should remove such requirements after 
https://issues.apache.org/jira/browse/IGNITE-11927 is completed.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12943) Document how to filter out metrics from registries

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12943:

Labels: IEP-35  (was: )

> Document how to filter out metrics from registries
> --
>
> Key: IGNITE-12943
> URL: https://issues.apache.org/jira/browse/IGNITE-12943
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Denis A. Magda
>Priority: Major
>  Labels: IEP-35
> Fix For: 2.8.1
>
>
> As per {{MetricExporterSpi.setExportFilter}} contract, the user can filter 
> out metrics for a specific exporter instance. For instance, this is how we 
> can ask a JMX exporter instance to ignore the cache metrics:
> {code}
> JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
> jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));
> cfg.setMetricExporterSpi(jmxSpi);
> {code}
> We should add  {{Metrics Filtering}} section to this documentation page [1] 
> explaining how to use the filtering. Also, I would clarify in the  
> {{MetricExporterSpi.setExportFilter}} JavaDocs that the method filters out 
> certain metrics from a specific exporter.
> Also, should we possibly rename the method to  
> {{MetricExporterSpi.setMetricsFilter}} to make things crystal clear?
> [1] https://apacheignite.readme.io/docs/new-metrics



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12943) Document how to filter out metrics from registries

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12943:

Description: 
As per {{MetricExporterSpi.setExportFilter}} contract, the user can filter out 
metrics for a specific exporter instance. For instance, this is how we can ask 
a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add  {{Metrics Filtering}} section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the  
{{MetricExporterSpi.setExportFilter}} JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to  
{{MetricExporterSpi.setMetricsFilter}} to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics

  was:
As per {{MetricExporterSpi.setExportFilter}} contract, the user can filter out 
metrics for a specific exporter instance. For instance, this is how we can ask 
a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add `Metrics Filtering section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the 
`MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to 
`MetricExporterSpi.setMetricsFilter` to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics


> Document how to filter out metrics from registries
> --
>
> Key: IGNITE-12943
> URL: https://issues.apache.org/jira/browse/IGNITE-12943
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Denis A. Magda
>Priority: Major
> Fix For: 2.8.1
>
>
> As per {{MetricExporterSpi.setExportFilter}} contract, the user can filter 
> out metrics for a specific exporter instance. For instance, this is how we 
> can ask a JMX exporter instance to ignore the cache metrics:
> {code}
> JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
> jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));
> cfg.setMetricExporterSpi(jmxSpi);
> {code}
> We should add  {{Metrics Filtering}} section to this documentation page [1] 
> explaining how to use the filtering. Also, I would clarify in the  
> {{MetricExporterSpi.setExportFilter}} JavaDocs that the method filters out 
> certain metrics from a specific exporter.
> Also, should we possibly rename the method to  
> {{MetricExporterSpi.setMetricsFilter}} to make things crystal clear?
> [1] https://apacheignite.readme.io/docs/new-metrics



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12943) Document how to filter out metrics from registries

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12943:

Description: 
As per {{MetricExporterSpi.setExportFilter}} contract, the user can filter out 
metrics for a specific exporter instance. For instance, this is how we can ask 
a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add `Metrics Filtering section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the 
`MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to 
`MetricExporterSpi.setMetricsFilter` to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics

  was:
As per {MetricExporterSpi.setExportFilter} contract, the user can filter out 
metrics for a specific exporter instance. For instance, this is how we can ask 
a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add `Metrics Filtering section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the 
`MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to 
`MetricExporterSpi.setMetricsFilter` to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics


> Document how to filter out metrics from registries
> --
>
> Key: IGNITE-12943
> URL: https://issues.apache.org/jira/browse/IGNITE-12943
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Denis A. Magda
>Priority: Major
> Fix For: 2.8.1
>
>
> As per {{MetricExporterSpi.setExportFilter}} contract, the user can filter 
> out metrics for a specific exporter instance. For instance, this is how we 
> can ask a JMX exporter instance to ignore the cache metrics:
> {code}
> JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
> jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));
> cfg.setMetricExporterSpi(jmxSpi);
> {code}
> We should add `Metrics Filtering section to this documentation page [1] 
> explaining how to use the filtering. Also, I would clarify in the 
> `MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
> certain metrics from a specific exporter.
> Also, should we possibly rename the method to 
> `MetricExporterSpi.setMetricsFilter` to make things crystal clear?
> [1] https://apacheignite.readme.io/docs/new-metrics



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12943) Document how to filter out metrics from registries

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12943:

Description: 
As per {MetricExporterSpi.setExportFilter} contract, the user can filter out 
metrics for a specific exporter instance. For instance, this is how we can ask 
a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add `Metrics Filtering section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the 
`MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to 
`MetricExporterSpi.setMetricsFilter` to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics

  was:
As per {code}MetricExporterSpi.setExportFilter{code} contract, the user can 
filter out metrics for a specific exporter instance. For instance, this is how 
we can ask a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add `Metrics Filtering section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the 
`MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to 
`MetricExporterSpi.setMetricsFilter` to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics


> Document how to filter out metrics from registries
> --
>
> Key: IGNITE-12943
> URL: https://issues.apache.org/jira/browse/IGNITE-12943
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Denis A. Magda
>Priority: Major
> Fix For: 2.8.1
>
>
> As per {MetricExporterSpi.setExportFilter} contract, the user can filter out 
> metrics for a specific exporter instance. For instance, this is how we can 
> ask a JMX exporter instance to ignore the cache metrics:
> {code}
> JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
> jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));
> cfg.setMetricExporterSpi(jmxSpi);
> {code}
> We should add `Metrics Filtering section to this documentation page [1] 
> explaining how to use the filtering. Also, I would clarify in the 
> `MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
> certain metrics from a specific exporter.
> Also, should we possibly rename the method to 
> `MetricExporterSpi.setMetricsFilter` to make things crystal clear?
> [1] https://apacheignite.readme.io/docs/new-metrics



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12943) Document how to filter out metrics from registries

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12943:

Description: 
As per {code}MetricExporterSpi.setExportFilter{code} contract, the user can 
filter out metrics for a specific exporter instance. For instance, this is how 
we can ask a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add `Metrics Filtering section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the 
`MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to 
`MetricExporterSpi.setMetricsFilter` to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics

  was:
As per `MetricExporterSpi.setExportFilter` contract, the user can filter out 
metrics for a specific exporter instance. For instance, this is how we can ask 
a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add `Metrics Filtering` section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the 
`MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to 
`MetricExporterSpi.setMetricsFilter` to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics


> Document how to filter out metrics from registries
> --
>
> Key: IGNITE-12943
> URL: https://issues.apache.org/jira/browse/IGNITE-12943
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Denis A. Magda
>Priority: Major
> Fix For: 2.8.1
>
>
> As per {code}MetricExporterSpi.setExportFilter{code} contract, the user can 
> filter out metrics for a specific exporter instance. For instance, this is 
> how we can ask a JMX exporter instance to ignore the cache metrics:
> {code}
> JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
> jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));
> cfg.setMetricExporterSpi(jmxSpi);
> {code}
> We should add `Metrics Filtering section to this documentation page [1] 
> explaining how to use the filtering. Also, I would clarify in the 
> `MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
> certain metrics from a specific exporter.
> Also, should we possibly rename the method to 
> `MetricExporterSpi.setMetricsFilter` to make things crystal clear?
> [1] https://apacheignite.readme.io/docs/new-metrics



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12943) Document how to filter out metrics from registries

2020-04-24 Thread Denis A. Magda (Jira)
Denis A. Magda created IGNITE-12943:
---

 Summary: Document how to filter out metrics from registries
 Key: IGNITE-12943
 URL: https://issues.apache.org/jira/browse/IGNITE-12943
 Project: Ignite
  Issue Type: Task
Reporter: Denis A. Magda
 Fix For: 2.8.1


As per `MetricExporterSpi.setExportFilter` contract, the user can filter out 
metrics for a specific exporter instance. For instance, this is how we can ask 
a JMX exporter instance to ignore the cache metrics:

{code}
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
{code}

We should add `Metrics Filtering` section to this documentation page [1] 
explaining how to use the filtering. Also, I would clarify in the 
`MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
certain metrics from a specific exporter.

Also, should we possibly rename the method to 
`MetricExporterSpi.setMetricsFilter` to make things crystal clear?

[1] https://apacheignite.readme.io/docs/new-metrics



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12943) Document how to filter out metrics from registries

2020-04-24 Thread Denis A. Magda (Jira)


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

Denis A. Magda updated IGNITE-12943:

Component/s: documentation

> Document how to filter out metrics from registries
> --
>
> Key: IGNITE-12943
> URL: https://issues.apache.org/jira/browse/IGNITE-12943
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Denis A. Magda
>Priority: Major
> Fix For: 2.8.1
>
>
> As per `MetricExporterSpi.setExportFilter` contract, the user can filter out 
> metrics for a specific exporter instance. For instance, this is how we can 
> ask a JMX exporter instance to ignore the cache metrics:
> {code}
> JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
> jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));
> cfg.setMetricExporterSpi(jmxSpi);
> {code}
> We should add `Metrics Filtering` section to this documentation page [1] 
> explaining how to use the filtering. Also, I would clarify in the 
> `MetricExporterSpi.setExportFilter` JavaDocs that the method filters out 
> certain metrics from a specific exporter.
> Also, should we possibly rename the method to 
> `MetricExporterSpi.setMetricsFilter` to make things crystal clear?
> [1] https://apacheignite.readme.io/docs/new-metrics



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12942) control.sh add command for checking that inline size is same on all cluster nodes

2020-04-24 Thread Sergey Antonov (Jira)


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

Sergey Antonov updated IGNITE-12942:

Release Note: Added "--cache check_index_inline_sizes" command to control 
utility. The command checks that indexes inline size the same on all cluster 
nodes. The command could be useful for analyzing performance problems with SQL 
queries.  

> control.sh add command for checking that inline size is same on all cluster 
> nodes
> -
>
> Key: IGNITE-12942
> URL: https://issues.apache.org/jira/browse/IGNITE-12942
> Project: Ignite
>  Issue Type: New Feature
>Reporter: Sergey Antonov
>Assignee: Sergey Antonov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We should check that the inline size is the same for the index on all nodes 
> in the cluster.
> 1. Check inline_size of secondary indexes on node join. Warn to log if they 
> differ and propose a recreate problem index.
> 2. Introduce a new command to control.sh (control.sh --cache 
> check_index_inline_sizes). The command will check inline sizes of secondary 
> indexes.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12942) control.sh add command for checking that inline size is same on all cluster nodes

2020-04-24 Thread Sergey Antonov (Jira)
Sergey Antonov created IGNITE-12942:
---

 Summary: control.sh add command for checking that inline size is 
same on all cluster nodes
 Key: IGNITE-12942
 URL: https://issues.apache.org/jira/browse/IGNITE-12942
 Project: Ignite
  Issue Type: New Feature
Reporter: Sergey Antonov
Assignee: Sergey Antonov
 Fix For: 2.9


We should check that the inline size is the same for the index on all nodes in 
the cluster.

1. Check inline_size of secondary indexes on node join. Warn to log if they 
differ and propose a recreate problem index.
2. Introduce a new command to control.sh (control.sh --cache 
check_index_inline_sizes). The command will check inline sizes of secondary 
indexes.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12941) .NET: Support .NET 5

2020-04-24 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-12941:
---

 Summary: .NET: Support .NET 5
 Key: IGNITE-12941
 URL: https://issues.apache.org/jira/browse/IGNITE-12941
 Project: Ignite
  Issue Type: New Feature
  Components: platforms
Reporter: Pavel Tupitsyn
Assignee: Pavel Tupitsyn
 Fix For: 2.9


.NET 5 is in preview. Ignite.NET does not seem to work there. Tested on Ubuntu:
* Install .NET 5 SDK from Snap
* Create new console app, add Apache.Ignite nuget package
* Add Ignition.Start
* dotnet run

{code}
Unhandled exception. Apache.Ignite.Core.Common.IgniteException: Failed to load 
libjvm.so:
[option=/usr/bin/java, 
path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so, 
error=Unknown error]
[option=/usr/bin/java, 
path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so, 
error=/snap/core18/current/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' 
not found (required by 
/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so)]
   at Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(String 
configJvmDllPath, ILogger log)
   at Apache.Ignite.Core.Ignition.Start(IgniteConfiguration cfg)
   at Apache.Ignite.Core.Ignition.Start()
   at dotnet5.Program.Main(String[] args) in 
/home/pavel/w/tests/dotnet5/Program.cs:line 10

{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12941) .NET: Support .NET 5

2020-04-24 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-12941:

Labels: .NET newbie  (was: .NET)

> .NET: Support .NET 5
> 
>
> Key: IGNITE-12941
> URL: https://issues.apache.org/jira/browse/IGNITE-12941
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET, newbie
> Fix For: 2.9
>
>
> .NET 5 is in preview. Ignite.NET does not seem to work there. Tested on 
> Ubuntu:
> * Install .NET 5 SDK from Snap
> * Create new console app, add Apache.Ignite nuget package
> * Add Ignition.Start
> * dotnet run
> {code}
> Unhandled exception. Apache.Ignite.Core.Common.IgniteException: Failed to 
> load libjvm.so:
> [option=/usr/bin/java, 
> path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so, 
> error=Unknown error]
> [option=/usr/bin/java, 
> path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so, 
> error=/snap/core18/current/lib/x86_64-linux-gnu/libm.so.6: version 
> `GLIBC_2.29' not found (required by 
> /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so)]
>at Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(String 
> configJvmDllPath, ILogger log)
>at Apache.Ignite.Core.Ignition.Start(IgniteConfiguration cfg)
>at Apache.Ignite.Core.Ignition.Start()
>at dotnet5.Program.Main(String[] args) in 
> /home/pavel/w/tests/dotnet5/Program.cs:line 10
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Comment Edited] (IGNITE-10720) Decrease time to save metadata during checkpoint

2020-04-24 Thread Ivan Daschinskiy (Jira)


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

Ivan Daschinskiy edited comment on IGNITE-10720 at 4/24/20, 7:01 PM:
-

[~akalashnikov] [~agoncharuk] [~zstan] +1 For deadlock. Changed implementation 
to synchronous and {{IgniteSequentialNodeCrashRecoveryTest}} doesn't hang 
locally. On master this test on my laptop hangs almost in all runs.


{code}
[2020-04-24 21:49:49,383][WARN 
][checkpoint-runner-#215%db.IgniteSequentialNodeCrashRecoveryTest0%][IgniteTestResources]
 Possible failure suppressed accordingly to a configured handler 
[hnd=NoOpFailureHandler [super=AbstractFailureHandler 
[ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, 
SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext 
[type=SYSTEM_CRITICAL_OPERATION_TIMEOUT, err=class o.a.i.IgniteException: 
Checkpoint read lock acquisition has been timed out.]]
class org.apache.ignite.IgniteException: Checkpoint read lock acquisition has 
been timed out.
at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.failCheckpointReadLock(GridCacheDatabaseSharedManager.java:1746)
at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.checkpointReadLock(GridCacheDatabaseSharedManager.java:1683)
at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.init0(GridCacheOffheapManager.java:1696)
at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.fullSize(GridCacheOffheapManager.java:2069)
at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager$Checkpointer.lambda$fillCacheGroupState$1(GridCacheDatabaseSharedManager.java:4190)
at 
org.apache.ignite.internal.util.IgniteUtils.lambda$wrapIgniteFuture$3(IgniteUtils.java:11412)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
{code}



was (Author: ivandasch):
[~akalashnikov] [~agoncharuk] [~zstan] +1 For deadlock. Changed implementation 
to synchronous and {{IgniteSequentialNodeCrashRecoveryTest}} doesn't hang 
locally. On master this test on my laptop hangs almost in all runs.

> Decrease time to save metadata during checkpoint
> 
>
> Key: IGNITE-10720
> URL: https://issues.apache.org/jira/browse/IGNITE-10720
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Anton Kalashnikov
>Assignee: Anton Kalashnikov
>Priority: Major
> Fix For: 2.8
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Looks like it's not neccessery save all metadata(like free list) under write 
> checkpoint lock because sometimes it's too long.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Comment Edited] (IGNITE-10720) Decrease time to save metadata during checkpoint

2020-04-24 Thread Ivan Daschinskiy (Jira)


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

Ivan Daschinskiy edited comment on IGNITE-10720 at 4/24/20, 6:59 PM:
-

[~akalashnikov] [~agoncharuk] [~zstan] +1 For deadlock. Changed implementation 
to synchronous and {{IgniteSequentialNodeCrashRecoveryTest}} doesn't hang 
locally. On master this test on my laptop hangs almost in all runs.


was (Author: ivandasch):
[~akalashnikov][~agoncharuk][~zstan] +1 For deadlock. Changed implementation to 
synchronous and {{IgniteSequentialNodeCrashRecoveryTest}} doesn't hang locally. 
On master this test on my laptop hangs almost in all runs.

> Decrease time to save metadata during checkpoint
> 
>
> Key: IGNITE-10720
> URL: https://issues.apache.org/jira/browse/IGNITE-10720
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Anton Kalashnikov
>Assignee: Anton Kalashnikov
>Priority: Major
> Fix For: 2.8
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Looks like it's not neccessery save all metadata(like free list) under write 
> checkpoint lock because sometimes it's too long.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-10720) Decrease time to save metadata during checkpoint

2020-04-24 Thread Ivan Daschinskiy (Jira)


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

Ivan Daschinskiy commented on IGNITE-10720:
---

[~akalashnikov][~agoncharuk][~zstan] +1 For deadlock. Changed implementation to 
synchronous and {{IgniteSequentialNodeCrashRecoveryTest}} doesn't hang locally. 
On master this test on my laptop hangs almost in all runs.

> Decrease time to save metadata during checkpoint
> 
>
> Key: IGNITE-10720
> URL: https://issues.apache.org/jira/browse/IGNITE-10720
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Anton Kalashnikov
>Assignee: Anton Kalashnikov
>Priority: Major
> Fix For: 2.8
>
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Looks like it's not neccessery save all metadata(like free list) under write 
> checkpoint lock because sometimes it's too long.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12940) .NET: NuGet tests fail with compilation error

2020-04-24 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-12940:

Fix Version/s: 2.9

> .NET: NuGet tests fail with compilation error
> -
>
> Key: IGNITE-12940
> URL: https://issues.apache.org/jira/browse/IGNITE-12940
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET
> Fix For: 2.9
>
>
> {code}
> :\BuildAgent\temp\buildTmp\NuGetScratch\1izrscml.xvp.nugetrestore.targets(435,34):
>  error MSB4092: An unexpected token ")" was found at character position 28 in 
> condition "@(PackageReference->Count()) > 0". 
> [C:\BuildAgent\work\832880717e6391e9\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Apache.Ignite.Core.csproj
> {code}
> Caused by the bug in NuGet: https://github.com/NuGet/Home/issues/9458
> We use the latest version in build.ps1, so this started failing right after 
> the release.
> Fix the script to use a fixed, known-to-be-good version instead of the latest.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12940) .NET: NuGet tests fail with compilation error

2020-04-24 Thread Pavel Tupitsyn (Jira)


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

Pavel Tupitsyn updated IGNITE-12940:

Description: 
{code}
:\BuildAgent\temp\buildTmp\NuGetScratch\1izrscml.xvp.nugetrestore.targets(435,34):
 error MSB4092: An unexpected token ")" was found at character position 28 in 
condition "@(PackageReference->Count()) > 0". 
[C:\BuildAgent\work\832880717e6391e9\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Apache.Ignite.Core.csproj
{code}

Caused by the bug in NuGet: https://github.com/NuGet/Home/issues/9458
We use the latest version in build.ps1, so this started failing right after the 
release.

Fix the script to use a fixed, known-to-be-good version instead of the latest.

> .NET: NuGet tests fail with compilation error
> -
>
> Key: IGNITE-12940
> URL: https://issues.apache.org/jira/browse/IGNITE-12940
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET
>
> {code}
> :\BuildAgent\temp\buildTmp\NuGetScratch\1izrscml.xvp.nugetrestore.targets(435,34):
>  error MSB4092: An unexpected token ")" was found at character position 28 in 
> condition "@(PackageReference->Count()) > 0". 
> [C:\BuildAgent\work\832880717e6391e9\incubator-ignite\modules\platforms\dotnet\Apache.Ignite.Core\Apache.Ignite.Core.csproj
> {code}
> Caused by the bug in NuGet: https://github.com/NuGet/Home/issues/9458
> We use the latest version in build.ps1, so this started failing right after 
> the release.
> Fix the script to use a fixed, known-to-be-good version instead of the latest.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12940) .NET: NuGet tests fail with compilation error

2020-04-24 Thread Pavel Tupitsyn (Jira)
Pavel Tupitsyn created IGNITE-12940:
---

 Summary: .NET: NuGet tests fail with compilation error
 Key: IGNITE-12940
 URL: https://issues.apache.org/jira/browse/IGNITE-12940
 Project: Ignite
  Issue Type: New Feature
  Components: platforms
Reporter: Pavel Tupitsyn
Assignee: Pavel Tupitsyn






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12939) Add WhitespaceAround support checkstyle rule

2020-04-24 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created IGNITE-12939:


 Summary: Add WhitespaceAround support checkstyle rule
 Key: IGNITE-12939
 URL: https://issues.apache.org/jira/browse/IGNITE-12939
 Project: Ignite
  Issue Type: Task
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov
 Fix For: 2.9


White spaces must be checked according to java naming conventions.
Add the appropriate checkstyle rule.

{code}

 
 
 
 
 
 

 {code}
 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12939) Add WhitespaceAround support checkstyle rule

2020-04-24 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov updated IGNITE-12939:
-
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Add WhitespaceAround support checkstyle rule
> 
>
> Key: IGNITE-12939
> URL: https://issues.apache.org/jira/browse/IGNITE-12939
> Project: Ignite
>  Issue Type: Task
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
> Fix For: 2.9
>
>
> White spaces must be checked according to java naming conventions.
> Add the appropriate checkstyle rule.
> {code}
> 
>  
>  
>  
>  
>  
>  
> 
>  {code}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12938) control.sh utility commands: IdleVerify and ValidateIndexes use eventual payload check.

2020-04-24 Thread Stanilovsky Evgeny (Jira)


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

Stanilovsky Evgeny updated IGNITE-12938:

Summary: control.sh utility commands: IdleVerify and ValidateIndexes use 
eventual payload check.  (was: controls.sh utility commands: IdleVerify and 
ValidateIndexes use eventual payload check.)

> control.sh utility commands: IdleVerify and ValidateIndexes use eventual 
> payload check.
> ---
>
> Key: IGNITE-12938
> URL: https://issues.apache.org/jira/browse/IGNITE-12938
> Project: Ignite
>  Issue Type: Improvement
>  Components: general
>Affects Versions: 2.8
>Reporter: Stanilovsky Evgeny
>Assignee: Stanilovsky Evgeny
>Priority: Major
> Fix For: 2.9
>
>
> "Checkpoint with dirty pages started! Cluster not idle" - not idle detection 
> command, but mechanism for check payload during commands execution. 
> Additionally current functional miss check on caches without persistence.  
> Remove old functionality from PageMemory and move it into update counters 
> usage.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12938) controls.sh utility commands: IdleVerify and ValidateIndexes use eventual payload check.

2020-04-24 Thread Stanilovsky Evgeny (Jira)
Stanilovsky Evgeny created IGNITE-12938:
---

 Summary: controls.sh utility commands: IdleVerify and 
ValidateIndexes use eventual payload check.
 Key: IGNITE-12938
 URL: https://issues.apache.org/jira/browse/IGNITE-12938
 Project: Ignite
  Issue Type: Improvement
  Components: general
Affects Versions: 2.8
Reporter: Stanilovsky Evgeny
Assignee: Stanilovsky Evgeny
 Fix For: 2.9


"Checkpoint with dirty pages started! Cluster not idle" - not idle detection 
command, but mechanism for check payload during commands execution. 
Additionally current functional miss check on caches without persistence.  
Remove old functionality from PageMemory and move it into update counters usage.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12937) Create pull-request template for the github repo

2020-04-24 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov updated IGNITE-12937:
-
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Create pull-request template for the github repo
> 
>
> Key: IGNITE-12937
> URL: https://issues.apache.org/jira/browse/IGNITE-12937
> Project: Ignite
>  Issue Type: Task
>Reporter: Maxim Muzafarov
>Priority: Major
>
> Create {{.github/pull_request_template.md}} to allow users to have a 
> pull-request all usefull information while contributing to the Apache Ignite.
> Example:
> [ ] Coding Guidelines are followed
> [ ] TeamCity build passes
> [ ] JIRA ticked is in Patch Available state, a review has been requested in
> comments



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12937) Create pull-request template for the github repo

2020-04-24 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created IGNITE-12937:


 Summary: Create pull-request template for the github repo
 Key: IGNITE-12937
 URL: https://issues.apache.org/jira/browse/IGNITE-12937
 Project: Ignite
  Issue Type: Task
Reporter: Maxim Muzafarov


Create {{.github/pull_request_template.md}} to allow users to have a 
pull-request all usefull information while contributing to the Apache Ignite.

Example:

[ ] Coding Guidelines are followed
[ ] TeamCity build passes
[ ] JIRA ticked is in Patch Available state, a review has been requested in
comments



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12911) B+Tree Corrupted exception when using a key extracted from a BinaryObject value object --- and SQL enabled.

2020-04-24 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev commented on IGNITE-12911:
--

This is because, for key2, detachAllowed is false, and even if it was true, we 
never seem to call detach() while doing put().

This is bad, we should definitely make sure we are putting a detached object in 
cache at all times. We should also set detachAllowed to true in all cases where 
it is permitted. 

The code sample is fixed in the following fashion:

((BinaryObjectImpl)key2).detachAllowed(true);
key2 = ((BinaryObjectImpl)key2).detach();

before problematic puts

> B+Tree Corrupted exception when using a key extracted from a BinaryObject 
> value object --- and SQL enabled.
> ---
>
> Key: IGNITE-12911
> URL: https://issues.apache.org/jira/browse/IGNITE-12911
> Project: Ignite
>  Issue Type: Bug
>  Components: cache, sql
>Reporter: Alexander Korenshteyn
>Priority: Blocker
> Fix For: 2.9
>
> Attachments: Employee.java, EmployeeId.java, ServerNode.java, 
> image-2020-04-21-17-10-55-797.png, image-2020-04-21-17-11-31-242.png, 
> image-2020-04-21-17-16-10-703.png, image-2020-04-21-17-16-29-107.png, 
> image-2020-04-21-17-16-46-381.png
>
>
> If a key is part of the value like so:
>  class key \{ ... }
> class value
> { private Key key getKey() }
> cache = ignite.cache()*.withKeepBinary()*
> the following scenario yields a B+ Tree exception:
> 1. *Enable SQL via annotations or QueryEntities.*
> key1= new Key()
>  value1 = new Value(key1)
> cache.put(key1, value1)
> BinaryObject val2 = cache.get(key1)
>  BinaryObject key2 = val2.field("key")
>  
> *cache2.put(key2.toBuilder().build(), emp1); // OK!*
>  
> *cache.put(key2, emp1); // CRASH!!! CorruptedTreeException: B+Tree 
> iscorrupted ...*
> user list:
>  
> [http://apache-ignite-users.70518.x6.nabble.com/Ignite-crashes-with-CorruptedTreeException-quot-B-Tree-is-corrupted-quot-on-a-composite-BinaryObjecto-tc32032.html]
> *Reproducer – attached* 
>  
> his happens because:
> CacheRowAdapter.readFullRow() reads the length
> *int len = PageUtils.getInt(addr,off)*
> *it returns 0 when val2.field("key") is used*
>  
> *the data is written correctly in DataPageIO.writeDataPageIO():*
> !image-2020-04-21-17-16-46-381.png!
>  
> *but read incorrectly in CacheRowAdapter.readFullRow()*
>    !image-2020-04-21-17-16-29-107.png!
>  
>   
>  Exception:
> [2020-04-17 11:24:33,475][ERROR][main][root] Critical system error detected. 
> Will be handled accordingly to configured handler 
> [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0, 
> super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet 
> [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], 
> failureCtx=FailureContext [type=CRITICAL_ERROR, err=class 
> o.a.i.i.processors.cache.persistence.tree.CorruptedTreeException: B+Tree is 
> corrupted [pages(groupId, pageId)=[IgniteBiTuple [val1=1258113742, 
> val2=844420635164673]], cacheId=1976096430, cacheName=EMPLOYEE, 
> indexName=_key_PK, msg=Runtime failure on row: Row@2233cac0[ key: 
> model.EmployeeId [idHash=1744523301, hash=674030145, employeeNumber=65348765, 
> departmentNumber=123], val: model.Employee [idHash=382762227, 
> hash=1627745429, firstName=John, lastName=Smith, id=model.EmployeeId 
> [idHash=2021540695, hash=674030145, employeeNumber=65348765, 
> departmentNumber=123]] ][ John, Smith 
> class 
> org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
>  B+Tree is corrupted [pages(groupId, pageId)=[IgniteBiTuple [val1=1258113742, 
> val2=844420635164673]], cacheId=1976096430, cacheName=EMPLOYEE, 
> indexName=_key_PK, msg=Runtime failure on row: Row@2233cac0[ key: 
> model.EmployeeId [idHash=1744523301, hash=674030145, employeeNumber=65348765, 
> departmentNumber=123], val: model.Employee [idHash=382762227, 
> hash=1627745429, firstName=John, lastName=Smith, id=model.EmployeeId 
> [idHash=2021540695, hash=674030145, employeeNumber=65348765, 
> departmentNumber=123]] ][ John, Smith ]]
> at 
> org.apache.ignite.internal.processors.query.h2.database.H2Tree.corruptedTreeException(H2Tree.java:836)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.doPut(BPlusTree.java:2447)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.putx(BPlusTree.java:2394)
> at 
> org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex.putx(H2TreeIndex.java:437)
> at 
> org.apache.ignite.internal.processors.query.h2.opt.GridH2Table.update(GridH2Table.java:756)
> at 
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.store(IgniteH2Indexing.java:363)
> at 
> 

[jira] [Created] (IGNITE-12936) .NET inspections fail on master

2020-04-24 Thread Igor Sapego (Jira)
Igor Sapego created IGNITE-12936:


 Summary: .NET inspections fail on master
 Key: IGNITE-12936
 URL: https://issues.apache.org/jira/browse/IGNITE-12936
 Project: Ignite
  Issue Type: Bug
  Components: platforms
Reporter: Igor Sapego
Assignee: Igor Sapego


The following suites are failing:
[Platform .NET (NuGet) 
|https://ci.ignite.apache.org/buildConfiguration/IgniteTests24Java8_PlatformNetNuGet?branch=%3Cdefault%3E]
[Platform .NET (Inspections) 
|https://ci.ignite.apache.org/buildConfiguration/IgniteTests24Java8_PlatformNetInspections?branch=%3Cdefault%3E]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-10100) Add public Java API to call Ignite.NET services

2020-04-24 Thread Ivan Daschinskiy (Jira)


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

Ivan Daschinskiy commented on IGNITE-10100:
---

[~xtern][~nizhikov] Do you mind if I assign this ticket to me?

> Add public Java API to call Ignite.NET services
> ---
>
> Key: IGNITE-10100
> URL: https://issues.apache.org/jira/browse/IGNITE-10100
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms
>Affects Versions: 2.6
>Reporter: Alexey Kukushkin
>Assignee: Pavel Pereslegin
>Priority: Major
>  Labels: .NET, sbcf
> Attachments: ignite-10100-vs-2.8.patch
>
>
> Ignite wraps .NET services in PlatformDotNetServiceImpl implementing 
> PlatformService interface.
> PlatformService is defined in internal Ignite package 
> apache.ignite.internal.processors.platform.services. It exposes
> {{ invokeMethod(methodName, Object[] params): Object}}
> to call any service method dynamically. Right now there is no Ignite public 
> API to call a PlatformService using static typing.
> We need to develop a public API to call PlatformDotNetServiceImpl using 
> static typing in Java.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Assigned] (IGNITE-10100) Add public Java API to call Ignite.NET services

2020-04-24 Thread Ivan Daschinskiy (Jira)


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

Ivan Daschinskiy reassigned IGNITE-10100:
-

Assignee: Ivan Daschinskiy  (was: Pavel Pereslegin)

> Add public Java API to call Ignite.NET services
> ---
>
> Key: IGNITE-10100
> URL: https://issues.apache.org/jira/browse/IGNITE-10100
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms
>Affects Versions: 2.6
>Reporter: Alexey Kukushkin
>Assignee: Ivan Daschinskiy
>Priority: Major
>  Labels: .NET, sbcf
> Attachments: ignite-10100-vs-2.8.patch
>
>
> Ignite wraps .NET services in PlatformDotNetServiceImpl implementing 
> PlatformService interface.
> PlatformService is defined in internal Ignite package 
> apache.ignite.internal.processors.platform.services. It exposes
> {{ invokeMethod(methodName, Object[] params): Object}}
> to call any service method dynamically. Right now there is no Ignite public 
> API to call a PlatformService using static typing.
> We need to develop a public API to call PlatformDotNetServiceImpl using 
> static typing in Java.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12283) Access restriction to IgniteKernal

2020-04-24 Thread Denis Garus (Jira)


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

Denis Garus updated IGNITE-12283:
-
Description: 
IgniteKernal allows a user-defined code to get access to the internal features 
of Ignite. That behavior leads to security lack.
 We must encapsulate _IgniteKernal_ to restrict access to it from user-defined 
code.

Additionally, a proxied instance of Ignite allows users to use public API of 
Ignite. Otherwise, using public API inside the sandbox without proxying can be 
the reason for access control errors.

  was:
IgniteKernal allows a user-defined code to get access to the internal features 
of Ignite. That behavior leads to security lack.
We must encapsulate _IgniteKernal_ to restrict access to it from user-defined 
code.


> Access restriction to IgniteKernal
> --
>
> Key: IGNITE-12283
> URL: https://issues.apache.org/jira/browse/IGNITE-12283
> Project: Ignite
>  Issue Type: Task
>Reporter: Denis Garus
>Assignee: Denis Garus
>Priority: Major
>  Labels: iep-38
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> IgniteKernal allows a user-defined code to get access to the internal 
> features of Ignite. That behavior leads to security lack.
>  We must encapsulate _IgniteKernal_ to restrict access to it from 
> user-defined code.
> Additionally, a proxied instance of Ignite allows users to use public API of 
> Ignite. Otherwise, using public API inside the sandbox without proxying can 
> be the reason for access control errors.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Comment Edited] (IGNITE-12894) Cannot use IgniteAtomicSequence in Ignite services

2020-04-24 Thread Vyacheslav Daradur (Jira)


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

Vyacheslav Daradur edited comment on IGNITE-12894 at 4/24/20, 1:21 PM:
---

Both issues: this and IGNITE-12490 can be fixed by improvements of our 
deployment guarantees, read this for details: 
[dev-list-thread|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]

The main idea is allowing 
[GridServiceProxy#randomNodeForService|https://github.com/apache/ignite/blob/8cba313c9961b16e358834216e9992310f285985/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java#L283]
 to wait service deployment finished if it is registered in the cluster (but 
deployment has not finished yet).

It can be achieved in the same manner as for our ["API with a timeout" 
here|https://github.com/apache/ignite/blob/8dcd0f1d96dae965a0f5c479e6d0f4b4d50c6e2c/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java#L821http://example.com]
 (mentioned as a workaround in current issue description).

Need add some conditions, something like this:
{code:java}
IgniteUuid srvcUid = lookupRegisteredServiceId(name);

if (srvcUid == null)
return null; // Service is not registerd in cluster: wasn't present in cfg 
and didn't deployed througt API
Map top;
while (true) {
ServiceInfo srvcDesc = registeredServices.get(srvcUid);

if (srvcDesc == null) {
if (timeout == 0)
return null;
else
// Wait if someone sent service to deploy (as in current implementation)
}
top = srvcDesc.topologySnapshot();
if (!top.isEmpty())
return top;
// Wait using "servicesTopsUpdateMux" while service deployment finished and 
the topology will not be empty
// or removed from "registeredServices" in case if deployment failure
{code}


was (Author: daradurvs):
Both issues: this and IGNITE-12490 can be fixed by improvements of our 
deployment guarantees, read this for details: 
[dev-list-thread|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]

The main idea is allowing 
[GridServiceProxy#randomNodeForService|https://github.com/apache/ignite/blob/8cba313c9961b16e358834216e9992310f285985/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java#L283]
 to wait service deployment finished if it is registered in the cluster (but 
deployment has not finished yet).

It can be achieved in the same manner as for our ["API with a timeout" 
here|https://github.com/apache/ignite/blob/8dcd0f1d96dae965a0f5c479e6d0f4b4d50c6e2c/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java#L821http://example.com]
 (mentioned as a workaround in current issue description).

Need add some conditions, something like this:
{code:java}
IgniteUuid srvcUid = lookupRegisteredServiceId(name);

if (srvcUid == null)
return null; // Service is not registered in cluster: wasn't 
present in cfg and didn't deployed through API
while (true) {
ServiceInfo srvcDesc = registeredServices.get(srvcUid);
if (srvcDesc == null) {
if (timeout == 0)
return null;
else
// Wait if someone sent service to deploy (as in current 
implementation)
}
if (!srvcDesc.topologySnapshot().isEmpty()) {
return top;
}
// Wait using "servicesTopsUpdateMux" while service deployment 
finished and the topology will not be empty
// or removed from "registeredServices" in case if deployment 
failure
{code}

> Cannot use IgniteAtomicSequence in Ignite services
> --
>
> Key: IGNITE-12894
> URL: https://issues.apache.org/jira/browse/IGNITE-12894
> Project: Ignite
>  Issue Type: Bug
>  Components: compute
>Affects Versions: 2.8
>Reporter: Alexey Kukushkin
>Assignee: Mikhail Petrov
>Priority: Major
>  Labels: sbcf
>
> h2. Repro Steps
> Execute the below steps in default service deployment mode and in 
> discovery-based service deployment mode. 
>  Use {{-DIGNITE_EVENT_DRIVEN_SERVICE_PROCESSOR_ENABLED=true}} JVM option to 
> switch to the discovery-based service deployment mode.
>  * Create a service initializing an {{IgniteAtomicService}} in method 
> {{Service#init()}} and using the {{IgniteAtomicService}} in a business method.
>  * Start an Ignite node with the service specified in the IgniteConfiguration
>  * Invoke the service's business method on the Ignite node
> h3. Actual Result

[jira] [Comment Edited] (IGNITE-12894) Cannot use IgniteAtomicSequence in Ignite services

2020-04-24 Thread Vyacheslav Daradur (Jira)


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

Vyacheslav Daradur edited comment on IGNITE-12894 at 4/24/20, 1:16 PM:
---

Both issues: this and IGNITE-12490 can be fixed by improvements of our 
deployment guarantees, read this for details: 
[dev-list-thread|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]

The main idea is allowing 
[GridServiceProxy#randomNodeForService|https://github.com/apache/ignite/blob/8cba313c9961b16e358834216e9992310f285985/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java#L283]
 to wait service deployment finished if it is registered in the cluster (but 
deployment has not finished yet).

It can be achieved in the same manner as for our ["API with a timeout" 
here|https://github.com/apache/ignite/blob/8dcd0f1d96dae965a0f5c479e6d0f4b4d50c6e2c/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java#L821http://example.com]
 (mentioned as a workaround in current issue description).

Need add some conditions, something like this:
{code:java}
IgniteUuid srvcUid = lookupRegisteredServiceId(name);

if (srvcUid == null)
return null; // Service is not registered in cluster: wasn't 
present in cfg and didn't deployed through API
while (true) {
ServiceInfo srvcDesc = registeredServices.get(srvcUid);
if (srvcDesc == null) {
if (timeout == 0)
return null;
else
// Wait if someone sent service to deploy (as in current 
implementation)
}
if (!srvcDesc.topologySnapshot().isEmpty()) {
return top;
}
// Wait using "servicesTopsUpdateMux" while service deployment 
finished and the topology will not be empty
// or removed from "registeredServices" in case if deployment 
failure
{code}


was (Author: daradurvs):
Both issues: this and IGNITE-12490 can be fixed by improvements of our 
deployment guarantees, read this for details: 
[dev-list-thread|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]

The main idea is allowing 
[GridServiceProxy#randomNodeForService|https://github.com/apache/ignite/blob/8cba313c9961b16e358834216e9992310f285985/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java#L283]
 to wait service deployment finished if it is registered in the cluster (but 
deployment has not finished yet).

It can be achieved in the same manner as for our ["API with a timeout" 
here|https://github.com/apache/ignite/blob/8dcd0f1d96dae965a0f5c479e6d0f4b4d50c6e2c/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java#L821http://example.com]
 (mentioned as a workaround in current issue description).

Need add some conditions, something like this:
{code:java}
IgniteUuid srvcUid = lookupRegisteredServiceId(name);

if (srvcUid == null)
return null; // Service is not registered in cluster: wasn't 
present in cfg and didn't deployed through API

Map top;

while (true) {
ServiceInfo srvcDesc = registeredServices.get(srvcUid);

if (srvcDesc == null) {
if (timeout == 0)
return null;
else
// Wait if someone sent service to deploy (as in current 
implementation)
}

top = srvcDesc.topologySnapshot();

if (!top.isEmpty()) {
return top;
}

// Wait using "servicesTopsUpdateMux" while service deployment 
finished and the topology will not be empty
// or removed from "registeredServices" in case if deployment 
failure
{code}

> Cannot use IgniteAtomicSequence in Ignite services
> --
>
> Key: IGNITE-12894
> URL: https://issues.apache.org/jira/browse/IGNITE-12894
> Project: Ignite
>  Issue Type: Bug
>  Components: compute
>Affects Versions: 2.8
>Reporter: Alexey Kukushkin
>Assignee: Mikhail Petrov
>Priority: Major
>  Labels: sbcf
>
> h2. Repro Steps
> Execute the below steps in default service deployment mode and in 
> discovery-based service deployment mode. 
>  Use {{-DIGNITE_EVENT_DRIVEN_SERVICE_PROCESSOR_ENABLED=true}} JVM option to 
> switch to the discovery-based service deployment mode.
>  * Create a service initializing an {{IgniteAtomicService}} in method 
> {{Service#init()}} and using the {{IgniteAtomicService}} in a business 

[jira] [Issue Comment Deleted] (IGNITE-12490) Service proxy throws "Service not found" exception right after deploy

2020-04-24 Thread Vyacheslav Daradur (Jira)


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

Vyacheslav Daradur updated IGNITE-12490:

Comment: was deleted

(was: Both issues: this and IGNITE-12490 can be fixed by improvements of our 
deployment guarantees, read this for details: 
[dev-list-thread|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]

The main idea is allowing 
[GridServiceProxy#randomNodeForService|https://github.com/apache/ignite/blob/8cba313c9961b16e358834216e9992310f285985/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java#L283]
 to wait service deployment finished if it is registered in the cluster (but 
deployment has not finished yet).

It can be achieved in the same manner as for our ["API with a timeout" 
here|https://github.com/apache/ignite/blob/8dcd0f1d96dae965a0f5c479e6d0f4b4d50c6e2c/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java#L821http://example.com]
 (mentioned as a workaround in current issue description).

Need add some conditions, something like this:
{code:java}
IgniteUuid srvcUid = lookupRegisteredServiceId(name);

if (srvcUid == null)
return null; // Service is not registered in cluster: wasn't 
present in cfg and didn't deployed through API

Map top;

while (true) {
ServiceInfo srvcDesc = registeredServices.get(srvcUid);

if (srvcDesc == null) {
if (timeout == 0)
return null;
else
// Wait if someone sent service to deploy (as in current 
implementation)
}

top = srvcDesc.topologySnapshot();

if (!top.isEmpty()) {
return top;
}

// Wait using "servicesTopsUpdateMux" while service deployment 
finished and the topology will not be empty
// or removed from "registeredServices" in case if deployment 
failure
{code})

> Service proxy throws "Service not found" exception right after deploy
> -
>
> Key: IGNITE-12490
> URL: https://issues.apache.org/jira/browse/IGNITE-12490
> Project: Ignite
>  Issue Type: Improvement
>  Components: managed services
>Affects Versions: 2.8
>Reporter: Alexey Goncharuk
>Priority: Major
> Attachments: ServiceInvokeTest.java
>
>
> In the following scenario:
>  * Start nodes A, B
>  * Deploy a service on A
>  * Create a service proxy on B
>  * Invoke the proxy
> The proxy invocation throws a service not found exception. As per discussion 
> [on the dev 
> list|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]
>  this case should be handled by an automatic retry, however, it's not.
> The reproducer is attached.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12894) Cannot use IgniteAtomicSequence in Ignite services

2020-04-24 Thread Vyacheslav Daradur (Jira)


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

Vyacheslav Daradur commented on IGNITE-12894:
-

Both issues: this and IGNITE-12490 can be fixed by improvements of our 
deployment guarantees, read this for details: 
[dev-list-thread|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]

The main idea is allowing 
[GridServiceProxy#randomNodeForService|https://github.com/apache/ignite/blob/8cba313c9961b16e358834216e9992310f285985/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java#L283]
 to wait service deployment finished if it is registered in the cluster (but 
deployment has not finished yet).

It can be achieved in the same manner as for our ["API with a timeout" 
here|https://github.com/apache/ignite/blob/8dcd0f1d96dae965a0f5c479e6d0f4b4d50c6e2c/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java#L821http://example.com]
 (mentioned as a workaround in current issue description).

Need add some conditions, something like this:
{code:java}
IgniteUuid srvcUid = lookupRegisteredServiceId(name);

if (srvcUid == null)
return null; // Service is not registered in cluster: wasn't 
present in cfg and didn't deployed through API

Map top;

while (true) {
ServiceInfo srvcDesc = registeredServices.get(srvcUid);

if (srvcDesc == null) {
if (timeout == 0)
return null;
else
// Wait if someone sent service to deploy (as in current 
implementation)
}

top = srvcDesc.topologySnapshot();

if (!top.isEmpty()) {
return top;
}

// Wait using "servicesTopsUpdateMux" while service deployment 
finished and the topology will not be empty
// or removed from "registeredServices" in case if deployment 
failure
{code}

> Cannot use IgniteAtomicSequence in Ignite services
> --
>
> Key: IGNITE-12894
> URL: https://issues.apache.org/jira/browse/IGNITE-12894
> Project: Ignite
>  Issue Type: Bug
>  Components: compute
>Affects Versions: 2.8
>Reporter: Alexey Kukushkin
>Assignee: Mikhail Petrov
>Priority: Major
>  Labels: sbcf
>
> h2. Repro Steps
> Execute the below steps in default service deployment mode and in 
> discovery-based service deployment mode. 
>  Use {{-DIGNITE_EVENT_DRIVEN_SERVICE_PROCESSOR_ENABLED=true}} JVM option to 
> switch to the discovery-based service deployment mode.
>  * Create a service initializing an {{IgniteAtomicService}} in method 
> {{Service#init()}} and using the {{IgniteAtomicService}} in a business method.
>  * Start an Ignite node with the service specified in the IgniteConfiguration
>  * Invoke the service's business method on the Ignite node
> h3. Actual Result
> h4. In Default Service Deployment Mode
> Deadlock on the business method invocation
> h4. In Discovery-Based Service Deployment Mode
> The method invocation fails with {{IgniteException: Failed to find deployed 
> service: IgniteTestService}}
> h2. Reproducer
> h3. Test.java
> {code:java}
> public interface Test {
> String sayHello(String name);
> }
> {code}
> h3. IgniteTestService.java
> {code:java}
> public class IgniteTestService implements Test, Service {
> private @IgniteInstanceResource Ignite ignite;
> private IgniteAtomicSequence seq;
> @Override public void cancel(ServiceContext ctx) {
> }
> @Override public void init(ServiceContext ctx) throws 
> InterruptedException {
> seq = ignite.atomicSequence("TestSeq", 0, true);
> }
> @Override public void execute(ServiceContext ctx) {
> }
> @Override public String sayHello(String name) {
> return "Hello, " + name + "! #" + seq.getAndIncrement();
> }
> }
> {code}
> h3. Reproducer.java
> {code:java}
> public class Reproducer {
> public static void main(String[] args) {
> IgniteConfiguration igniteCfg = new IgniteConfiguration()
> .setServiceConfiguration(
> new ServiceConfiguration()
> .setName(IgniteTestService.class.getSimpleName())
> .setMaxPerNodeCount(1)
> .setTotalCount(0)
> .setService(new IgniteTestService())
> )
> .setDiscoverySpi(
> new TcpDiscoverySpi()
> .setIpFinder(new 
> TcpDiscoveryVmIpFinder().setAddresses(Collections.singleton("127.0.0.1:47500")))
> );
> try (Ignite ignite = Ignition.start(igniteCfg)) {
> 
> 

[jira] [Commented] (IGNITE-12490) Service proxy throws "Service not found" exception right after deploy

2020-04-24 Thread Vyacheslav Daradur (Jira)


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

Vyacheslav Daradur commented on IGNITE-12490:
-

Both issues: this and IGNITE-12490 can be fixed by improvements of our 
deployment guarantees, read this for details: 
[dev-list-thread|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]

The main idea is allowing 
[GridServiceProxy#randomNodeForService|https://github.com/apache/ignite/blob/8cba313c9961b16e358834216e9992310f285985/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java#L283]
 to wait service deployment finished if it is registered in the cluster (but 
deployment has not finished yet).

It can be achieved in the same manner as for our ["API with a timeout" 
here|https://github.com/apache/ignite/blob/8dcd0f1d96dae965a0f5c479e6d0f4b4d50c6e2c/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java#L821http://example.com]
 (mentioned as a workaround in current issue description).

Need add some conditions, something like this:
{code:java}
IgniteUuid srvcUid = lookupRegisteredServiceId(name);

if (srvcUid == null)
return null; // Service is not registered in cluster: wasn't 
present in cfg and didn't deployed through API

Map top;

while (true) {
ServiceInfo srvcDesc = registeredServices.get(srvcUid);

if (srvcDesc == null) {
if (timeout == 0)
return null;
else
// Wait if someone sent service to deploy (as in current 
implementation)
}

top = srvcDesc.topologySnapshot();

if (!top.isEmpty()) {
return top;
}

// Wait using "servicesTopsUpdateMux" while service deployment 
finished and the topology will not be empty
// or removed from "registeredServices" in case if deployment 
failure
{code}

> Service proxy throws "Service not found" exception right after deploy
> -
>
> Key: IGNITE-12490
> URL: https://issues.apache.org/jira/browse/IGNITE-12490
> Project: Ignite
>  Issue Type: Improvement
>  Components: managed services
>Affects Versions: 2.8
>Reporter: Alexey Goncharuk
>Priority: Major
> Attachments: ServiceInvokeTest.java
>
>
> In the following scenario:
>  * Start nodes A, B
>  * Deploy a service on A
>  * Create a service proxy on B
>  * Invoke the proxy
> The proxy invocation throws a service not found exception. As per discussion 
> [on the dev 
> list|http://apache-ignite-developers.2346864.n4.nabble.com/Discovery-based-services-deployment-guarantees-question-td44866.html]
>  this case should be handled by an automatic retry, however, it's not.
> The reproducer is attached.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12835) Thin client: compute support

2020-04-24 Thread Igor Sapego (Jira)


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

Igor Sapego commented on IGNITE-12835:
--

[~alex_pl] see my minor comments in PR. Over all looks good.

> Thin client: compute support
> 
>
> Key: IGNITE-12835
> URL: https://issues.apache.org/jira/browse/IGNITE-12835
> Project: Ignite
>  Issue Type: New Feature
>  Components: thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-42
>  Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> Add compute grid functionality to thin clients.
> As a first step execution of task by task name should be added.
> Implement a compute facade in java thin client.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12934) Change test start|stop log format for correct TC and build.log visibility.

2020-04-24 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev commented on IGNITE-12934:
--

I don't think PDS or ZooKeeper are mine, I have re-muted OSGi, but I'll do some 
improvements first.

> Change test start|stop log format for correct TC and build.log visibility.
> --
>
> Key: IGNITE-12934
> URL: https://issues.apache.org/jira/browse/IGNITE-12934
> Project: Ignite
>  Issue Type: Improvement
>  Components: build
>Reporter: Ilya Kasnacheev
>Assignee: Ilya Kasnacheev
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> For correct TC and builds log visibility need to repeat log format, from : 
> ">>> Stopping test: "
> as 
> "##teamcity[testFinished name='"
> additional info:
> https://www.jetbrains.com/help/teamcity/build-script-interaction-with-teamcity.html#BuildScriptInteractionwithTeamCity-ReportingTests
> Also, make “Starting test”, “Stopping test” messages visible in Quiet mode!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12934) Change test start|stop log format for correct TC and build.log visibility.

2020-04-24 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-12934:


{panel:title=Branch: [pull/7715/head] Base: [master] : Possible Blockers 
(4)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}
{color:#d04437}PDS (Indexing){color} [[tests 0 Exit Code 
|https://ci.ignite.apache.org/viewLog.html?buildId=5254123]]

{color:#d04437}ZooKeeper (Discovery) 3{color} [[tests 
1|https://ci.ignite.apache.org/viewLog.html?buildId=5251312]]
* ZookeeperDiscoverySpiTestSuite3: 
multijvm.GridCachePartitionedMultiJvmFullApiSelfTest - History for base branch 
is absent.

{color:#d04437}OSGi{color} [[tests 
2|https://ci.ignite.apache.org/viewLog.html?buildId=5251619]]
* 
org.apache.ignite.osgi.IgniteKarafFeaturesInstallationTest.testAllBundlesActiveAndFeaturesInstalled
 - New test duration 180s is more that 1 minute
* 
org.apache.ignite.osgi.IgniteOsgiServiceTest.testServiceExposedAndCallbacksInvoked
 - New test duration 181s is more that 1 minute

{panel}
[TeamCity *-- Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5249241buildTypeId=IgniteTests24Java8_RunAll]

> Change test start|stop log format for correct TC and build.log visibility.
> --
>
> Key: IGNITE-12934
> URL: https://issues.apache.org/jira/browse/IGNITE-12934
> Project: Ignite
>  Issue Type: Improvement
>  Components: build
>Reporter: Ilya Kasnacheev
>Assignee: Ilya Kasnacheev
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> For correct TC and builds log visibility need to repeat log format, from : 
> ">>> Stopping test: "
> as 
> "##teamcity[testFinished name='"
> additional info:
> https://www.jetbrains.com/help/teamcity/build-script-interaction-with-teamcity.html#BuildScriptInteractionwithTeamCity-ReportingTests
> Also, make “Starting test”, “Stopping test” messages visible in Quiet mode!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Issue Comment Deleted] (IGNITE-12934) Change test start|stop log format for correct TC and build.log visibility.

2020-04-24 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev updated IGNITE-12934:
-
Comment: was deleted

(was: {panel:title=Branch: [pull/7715/head] Base: [master] : Possible Blockers 
(11)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}
{color:#d04437}PDS (Indexing){color} [[tests 0 TIMEOUT , Exit Code 
|https://ci.ignite.apache.org/viewLog.html?buildId=5249205]]

{color:#d04437}ZooKeeper (Discovery) 3{color} [[tests 
1|https://ci.ignite.apache.org/viewLog.html?buildId=5249219]]
* ZookeeperDiscoverySpiTestSuite3: 
multijvm.GridCachePartitionedMultiJvmFullApiSelfTest - History for base branch 
is absent.

{color:#d04437}Cache 7{color} [[tests 
1|https://ci.ignite.apache.org/viewLog.html?buildId=5249196]]
* IgniteCacheTestSuite7: 
TxRollbackAsyncWithPersistenceTest.testMixedAsyncRollbackTypes - Test has low 
fail rate in base branch 0,0% and is not flaky

{color:#d04437}Cache 2{color} [[tests 1 TIMEOUT , Exit Code 
|https://ci.ignite.apache.org/viewLog.html?buildId=5249191]]
* IgniteCacheTestSuite2: 
IgniteCacheClientNodeChangingTopologyTest.testAtomicPrimaryPutAllMultinode - 
Test has low fail rate in base branch 0,0% and is not flaky

{color:#d04437}Cassandra Store{color} [[tests 
1|https://ci.ignite.apache.org/viewLog.html?buildId=5249238]]
* 
org.apache.ignite.tests.CassandraDirectPersistenceTest.pojoStrategyTransactionTest
 - History for base branch is absent.

{color:#d04437}Basic 2{color} [[tests 
1|https://ci.ignite.apache.org/viewLog.html?buildId=5249129]]
* IgniteComputeBasicConfigVariationsFullApiTestSuite: 
IgniteComputeConfigVariationsFullApiTest_17.testDeployExecuteByName - Test has 
low fail rate in base branch 0,0% and is not flaky

{color:#d04437}Cache 9{color} [[tests 1 Exit Code 
|https://ci.ignite.apache.org/viewLog.html?buildId=5249198]]
* IgniteCacheTestSuite9: 
MetricsConfigurationTest.testConfigRemovedOnCacheRemove - Test has low fail 
rate in base branch 0,0% and is not flaky

{color:#d04437}OSGi{color} [[tests 
2|https://ci.ignite.apache.org/viewLog.html?buildId=5249203]]
* 
org.apache.ignite.osgi.IgniteKarafFeaturesInstallationTest.testAllBundlesActiveAndFeaturesInstalled
 - History for base branch is absent.
* 
org.apache.ignite.osgi.IgniteOsgiServiceTest.testServiceExposedAndCallbacksInvoked
 - History for base branch is absent.

{panel}
[TeamCity *-- Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5249241buildTypeId=IgniteTests24Java8_RunAll])

> Change test start|stop log format for correct TC and build.log visibility.
> --
>
> Key: IGNITE-12934
> URL: https://issues.apache.org/jira/browse/IGNITE-12934
> Project: Ignite
>  Issue Type: Improvement
>  Components: build
>Reporter: Ilya Kasnacheev
>Assignee: Ilya Kasnacheev
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> For correct TC and builds log visibility need to repeat log format, from : 
> ">>> Stopping test: "
> as 
> "##teamcity[testFinished name='"
> additional info:
> https://www.jetbrains.com/help/teamcity/build-script-interaction-with-teamcity.html#BuildScriptInteractionwithTeamCity-ReportingTests
> Also, make “Starting test”, “Stopping test” messages visible in Quiet mode!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12905) QueryKeyValueIterable missing custom spliterator() implementation

2020-04-24 Thread Dmitriy Sorokin (Jira)


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

Dmitriy Sorokin commented on IGNITE-12905:
--

[~bleedah], so far seems no, just stay tuned.

> QueryKeyValueIterable missing custom spliterator() implementation
> -
>
> Key: IGNITE-12905
> URL: https://issues.apache.org/jira/browse/IGNITE-12905
> Project: Ignite
>  Issue Type: Bug
>  Components: cache, general
>Affects Versions: 2.8
> Environment: Windows 10
> JDK 1.8.0_172
> ignite-core 2.8.0
> reactor-core 3.3.3
>Reporter: Johnny Galatikitis
>Assignee: Johnny Galatikitis
>Priority: Critical
> Fix For: 2.8.1
>
> Attachments: 
> IGNITE-12905_-_add_QueryKeyValueSpliterator_and_corresponding_test.patch
>
>  Time Spent: 4h 40m
>  Remaining Estimate: 0h
>
> We are using apache ignite with reactor-core and since reactors upgrade from 
> 3.2.12 to 3.3.3 {code:java}
> org.apache.ignite.internal.processors.query.QueryKeyValueIterable.iterator
> {code}
> is called multiple times. It starts with:
> 1. calling iterable.spliterator().hasCharacteristics(Spliterator.SIZED), 
> where iterable is instanceof QueryKeyValueIterable
> 2. calls default implementation 
> Spliterators.spliteratorUnknownSize(iterator(), 0)
> 3. which in turn calls ignite's QueryKeyValueIterable.iterator() call and 
> that "uses it up" for subsequent calls, i.e. throw IgniteException "Iterator 
> is already fetched or query was cancelled."



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12905) QueryKeyValueIterable missing custom spliterator() implementation

2020-04-24 Thread Johnny Galatikitis (Jira)


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

Johnny Galatikitis commented on IGNITE-12905:
-

[~cyberdemon] great! Is there anything else I should do? Workflow wise

> QueryKeyValueIterable missing custom spliterator() implementation
> -
>
> Key: IGNITE-12905
> URL: https://issues.apache.org/jira/browse/IGNITE-12905
> Project: Ignite
>  Issue Type: Bug
>  Components: cache, general
>Affects Versions: 2.8
> Environment: Windows 10
> JDK 1.8.0_172
> ignite-core 2.8.0
> reactor-core 3.3.3
>Reporter: Johnny Galatikitis
>Assignee: Johnny Galatikitis
>Priority: Critical
> Fix For: 2.8.1
>
> Attachments: 
> IGNITE-12905_-_add_QueryKeyValueSpliterator_and_corresponding_test.patch
>
>  Time Spent: 4h 40m
>  Remaining Estimate: 0h
>
> We are using apache ignite with reactor-core and since reactors upgrade from 
> 3.2.12 to 3.3.3 {code:java}
> org.apache.ignite.internal.processors.query.QueryKeyValueIterable.iterator
> {code}
> is called multiple times. It starts with:
> 1. calling iterable.spliterator().hasCharacteristics(Spliterator.SIZED), 
> where iterable is instanceof QueryKeyValueIterable
> 2. calls default implementation 
> Spliterators.spliteratorUnknownSize(iterator(), 0)
> 3. which in turn calls ignite's QueryKeyValueIterable.iterator() call and 
> that "uses it up" for subsequent calls, i.e. throw IgniteException "Iterator 
> is already fetched or query was cancelled."



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12795) Partially revert changes to atomic caches introduced in IGNITE-11797

2020-04-24 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov commented on IGNITE-12795:


Merged to master #811439cf43b39e0b69889c4c79a808dc15c3cd9f and 2.8.1 
#74cb70d83e4ddbc3b1e4e2a806a2c82b07e6ebdc

> Partially revert changes to atomic caches introduced in IGNITE-11797
> 
>
> Key: IGNITE-12795
> URL: https://issues.apache.org/jira/browse/IGNITE-12795
> Project: Ignite
>  Issue Type: Bug
>  Components: cache
>Affects Versions: 2.8
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Blocker
> Fix For: 2.8.1
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> These changes can trigger node failure during update on backup:
> Better fix for atomics is needed.
> {noformat}
> class org.apache.ignite.IgniteCheckedException: Failed to update the counter 
> [newVal=173, curState=Counter [lwm=172, holes={173=Item [start=173, 
> delta=1]}, maxApplied=174, hwm=173]]
> at 
> org.apache.ignite.internal.processors.cache.PartitionUpdateCounterTrackingImpl.update(PartitionUpdateCounterTrackingImpl.java:152)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateCounter(IgniteCacheOffheapManagerImpl.java:1578)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateCounter(GridCacheOffheapManager.java:2198)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.nextUpdateCounter(GridDhtLocalPartition.java:995)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry.nextPartitionCounter(GridDhtCacheEntry.java:104)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6434)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6190)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5881)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:3995)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3889)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2020)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1904)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1656)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2450)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3362)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:139)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:306)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
> at 
> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1637)
> at 
> 

[jira] [Commented] (IGNITE-12917) SQL: print warning log message when query's result is big

2020-04-24 Thread Taras Ledkov (Jira)


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

Taras Ledkov commented on IGNITE-12917:
---

[~amashenkov], please review the patch.

> SQL: print warning log message when query's result is big
> -
>
> Key: IGNITE-12917
> URL: https://issues.apache.org/jira/browse/IGNITE-12917
> Project: Ignite
>  Issue Type: Task
>  Components: sql
>Reporter: Taras Ledkov
>Assignee: Taras Ledkov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We have to track queries with big result set.
> Print warning log message when query's result is bigger than threshold 
> specified by JMX.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12917) SQL: print warning log message when query's result is big

2020-04-24 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-12917:


{panel:title=Branch: [pull/7697/head] Base: [master] : Possible Blockers 
(1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}
{color:#d04437}PDS (Indexing){color} [[tests 0 Exit Code 
|https://ci.ignite.apache.org/viewLog.html?buildId=5254125]]

{panel}
[TeamCity *-- Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5241208buildTypeId=IgniteTests24Java8_RunAll]

> SQL: print warning log message when query's result is big
> -
>
> Key: IGNITE-12917
> URL: https://issues.apache.org/jira/browse/IGNITE-12917
> Project: Ignite
>  Issue Type: Task
>  Components: sql
>Reporter: Taras Ledkov
>Assignee: Taras Ledkov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We have to track queries with big result set.
> Print warning log message when query's result is bigger than threshold 
> specified by JMX.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Assigned] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov reassigned IGNITE-12935:
--

Assignee: Vladislav Pyatkov

> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
> {noformat}
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was reserved, but minimum present counter is less than maximum 
> reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
> maxReservedNodeId=ID], ...]{noformat}
>  ## We can also aggregate previous message by (minNodeId) to easily find the 
> exact node (or nodes) which were the reason of full rebalance.
>  # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
> represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
> group, also log message about why the previous checkpoint wasn't successfully 
> reserved.
>  There can be three reasons:
>  ## Previous checkpoint simply isn't present in the history (the oldest is 
> reserved)
>  ## WAL reservation failure (call below returned false)
> {code:java}
> chpEntry = entry(cpTs);
> boolean reserved = cctx.wal().reserve(chpEntry.checkpointMark());// If 
> checkpoint WAL history can't be reserved, stop searching. 
> if (!reserved) 
>   break;{code}
> ## Checkpoint was marked as inapplicable for historical rebalancing
> {code:java}
> for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
>    if (!isCheckpointApplicableForGroup(grpId, chpEntry))
>      groupsAndPartitions.remove(grpId);{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12795) Partially revert changes to atomic caches introduced in IGNITE-11797

2020-04-24 Thread Ivan Rakov (Jira)


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

Ivan Rakov commented on IGNITE-12795:
-

[~ascherbakov] I'll take a look on what's wrong with TC bot.
LGTM, please merge.

> Partially revert changes to atomic caches introduced in IGNITE-11797
> 
>
> Key: IGNITE-12795
> URL: https://issues.apache.org/jira/browse/IGNITE-12795
> Project: Ignite
>  Issue Type: Bug
>  Components: cache
>Affects Versions: 2.8
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Blocker
> Fix For: 2.8.1
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> These changes can trigger node failure during update on backup:
> Better fix for atomics is needed.
> {noformat}
> class org.apache.ignite.IgniteCheckedException: Failed to update the counter 
> [newVal=173, curState=Counter [lwm=172, holes={173=Item [start=173, 
> delta=1]}, maxApplied=174, hwm=173]]
> at 
> org.apache.ignite.internal.processors.cache.PartitionUpdateCounterTrackingImpl.update(PartitionUpdateCounterTrackingImpl.java:152)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateCounter(IgniteCacheOffheapManagerImpl.java:1578)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateCounter(GridCacheOffheapManager.java:2198)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.nextUpdateCounter(GridDhtLocalPartition.java:995)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry.nextPartitionCounter(GridDhtCacheEntry.java:104)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6434)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6190)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5881)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:3995)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3889)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2020)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1904)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1656)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2450)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3362)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:139)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:306)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
> at 
> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1637)
> at 
> 

[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code:java}
chpEntry = entry(cpTs);
boolean reserved = cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching. 
if (!reserved) 
  break;{code}
## Checkpoint was marked as inapplicable for historical rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
   if (!isCheckpointApplicableForGroup(grpId, chpEntry))
     groupsAndPartitions.remove(grpId);{code}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}

 # 
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code:java}
chpEntry = entry(cpTs);
boolean reserved = cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching. 
if (!reserved) 
  break;{code}
## Checkpoint was marked as inapplicable for historical rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
   if (!isCheckpointApplicableForGroup(grpId, chpEntry))
     groupsAndPartitions.remove(grpId);{code}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
> {noformat}
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was reserved, but minimum present counter is less 

[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}

 # 
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code:java}
chpEntry = entry(cpTs);
boolean reserved = cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching. 
if (!reserved) 
  break;{code}
## Checkpoint was marked as inapplicable for historical rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
   if (!isCheckpointApplicableForGroup(grpId, chpEntry))
     groupsAndPartitions.remove(grpId);{code}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}

 # 
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code:java}
chpEntry = entry(cpTs);
boolean reserved = cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching. 
if (!reserved) 
  break;{code}

 ## Checkpoint was marked as inapplicable for historical rebalancing
{code}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
    groupsAndPartitions.remove(grpId);
{code:java}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
> {noformat}
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was reserved, but minimum present counter 

[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}

 # 
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code:java}
chpEntry = entry(cpTs);
boolean reserved = cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching. 
if (!reserved) 
  break;{code}

 ## Checkpoint was marked as inapplicable for historical rebalancing
{code}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
    groupsAndPartitions.remove(grpId);
{code:java}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}

 # 
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code:java}
chpEntry = entry(cpTs);
boolean reserved = cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching. 
if (!reserved) 
  break;{code}

 ## 
{code:java}
 {code}
 Checkpoint was marked as inapplicable for historical rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
> {noformat}
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was reserved, but 

[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}

 # 
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code:java}
chpEntry = entry(cpTs);
boolean reserved = cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching. 
if (!reserved) 
  break;{code}

 ## 
{code:java}
 {code}
 Checkpoint was marked as inapplicable for historical rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}

 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code}\{code}

{code:java}
chpEntry = entry(cpTs);
boolean reserved =  cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching.
if (!reserved)
  break;
{code}
                 3. Checkpoint was marked as inapplicable for historical 
rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
> {noformat}
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  

[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]{noformat}

 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)
{code}\{code}

{code:java}
chpEntry = entry(cpTs);
boolean reserved =  cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching.
if (!reserved)
  break;
{code}
                 3. Checkpoint was marked as inapplicable for historical 
rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]\{noformat}
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);
boolean reserved =  cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching.
if (!reserved)
  break;
{code}
                 3. Checkpoint was marked as inapplicable for historical 
rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
> {noformat}
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was 

[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
{noformat}Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]\{noformat}
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);
boolean reserved =  cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching.
if (!reserved)
  break;
{code}
                 3. Checkpoint was marked as inapplicable for historical 
rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);
boolean reserved =  cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching.
if (!reserved)
  break;
{code}
                 3. Checkpoint was marked as inapplicable for historical 
rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
> {noformat}Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was reserved, but minimum present counter is 

[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);
boolean reserved =  cctx.wal().reserve(chpEntry.checkpointMark());// If 
checkpoint WAL history can't be reserved, stop searching.
if (!reserved)
  break;
{code}
                 3. Checkpoint was marked as inapplicable for historical 
rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);boolean reserved =  
cctx.wal().reserve(chpEntry.checkpointMark());// If checkpoint WAL history 
can't be reserved, stop searching.
if (!reserved)
  break;
{code}
                 3. Checkpoint was marked as inapplicable for historical 
rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was reserved, but minimum present counter is less than maximum 
> 

[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);boolean reserved =  
cctx.wal().reserve(chpEntry.checkpointMark());// If checkpoint WAL history 
can't be reserved, stop searching.
if (!reserved)
  break;
{code}
                 3. Checkpoint was marked as inapplicable for historical 
rebalancing
{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);boolean reserved =  
cctx.wal().reserve(chpEntry.checkpointMark());// If checkpoint WAL history 
can't be reserved, stop searching.
if (!reserved)
  break;
{code}
 # 
 ## Checkpoint was marked as inapplicable for historical rebalancing

{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was reserved, but minimum present counter is less than maximum 
> reserved: 

[jira] [Comment Edited] (IGNITE-12788) Cluster achieved fully rebalanced (PME-free ready) state metric

2020-04-24 Thread Anton Vinogradov (Jira)


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

Anton Vinogradov edited comment on IGNITE-12788 at 4/24/20, 9:13 AM:
-

[~PetrovMikhail]

Another problem here that fix already merged to 2.9, but issue marked as 
Reopened (Not Resolved).

It will take additional time to gain what is going on here :)

A good case is just to add 2.8.1 version (with a comment) to already resolved 
issue once we finish merging to 2.8.1.


was (Author: avinogradov):
[~PetrovMikhail]

Another problem here that fix already merged to 2.9, but issue marked as 
Reopened (Not Resolved).

It will take additional time to gain what is going on here :)

A good case is just to add 2.8.1 version to already (with a comment) resolved 
issue once we finish merging to 2.8.1.

> Cluster achieved fully rebalanced (PME-free ready) state metric
> ---
>
> Key: IGNITE-12788
> URL: https://issues.apache.org/jira/browse/IGNITE-12788
> Project: Ignite
>  Issue Type: Task
>Reporter: Anton Vinogradov
>Assignee: Nikolay Izhikov
>Priority: Major
> Fix For: 2.9, 2.8.1
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Currently, there is no metric responsible for "PME-free ready state achieved" 
> delivery.
> {{GridDhtPartitionsExchangeFuture#rebalanced}} can be used to provide such 
> metric.
> Seems, we should update metric on each 
> {{GridDhtPartitionsExchangeFuture#onDone}}.
> P.s. Late Affinity Assignment should always set {{true}} to metric value.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12788) Cluster achieved fully rebalanced (PME-free ready) state metric

2020-04-24 Thread Anton Vinogradov (Jira)


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

Anton Vinogradov commented on IGNITE-12788:
---

[~PetrovMikhail]

Another problem here that fix already merged to 2.9, but issue marked as 
Reopened (Not Resolved).

It will take additional time to gain what is going on here :)

A good case is just to add 2.8.1 version to already (with a comment) resolved 
issue once we finish merging to 2.8.1.

> Cluster achieved fully rebalanced (PME-free ready) state metric
> ---
>
> Key: IGNITE-12788
> URL: https://issues.apache.org/jira/browse/IGNITE-12788
> Project: Ignite
>  Issue Type: Task
>Reporter: Anton Vinogradov
>Assignee: Nikolay Izhikov
>Priority: Major
> Fix For: 2.9, 2.8.1
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Currently, there is no metric responsible for "PME-free ready state achieved" 
> delivery.
> {{GridDhtPartitionsExchangeFuture#rebalanced}} can be used to provide such 
> metric.
> Seems, we should update metric on each 
> {{GridDhtPartitionsExchangeFuture#onDone}}.
> P.s. Late Affinity Assignment should always set {{true}} to metric value.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)
Vladislav Pyatkov created IGNITE-12935:
--

 Summary: Disadvantages in log of historical rebalance
 Key: IGNITE-12935
 URL: https://issues.apache.org/jira/browse/IGNITE-12935
 Project: Ignite
  Issue Type: Improvement
Reporter: Vladislav Pyatkov


# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of reserveHistoryForExchange(). They can be compactly 
represented as mappings: (grpId -> checkpoint (id, timestamp)). For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);boolean reserved =  
cctx.wal().reserve(chpEntry.checkpointMark());// If checkpoint WAL history 
can't be reserved, stop searching.
if (!reserved)
  break;
{code}

 ## Checkpoint was marked as inapplicable for historical rebalancing

{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12935) Disadvantages in log of historical rebalance

2020-04-24 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-12935:
---
Description: 
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
 This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
 Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of {{reserveHistoryForExchange()}}. They can be compactly 
represented as mappings: {{(grpId -> checkpoint (id, timestamp))}}. For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
 There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);boolean reserved =  
cctx.wal().reserve(chpEntry.checkpointMark());// If checkpoint WAL history 
can't be reserved, stop searching.
if (!reserved)
  break;
{code}
 # 
 ## Checkpoint was marked as inapplicable for historical rebalancing

{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}

  was:
# Mention in the log only partitions for which there are no nodes that suit as 
historical supplier
 For these partitions, print minimal counter (since which we should perform 
historical rebalancing) with corresponding node and maximum reserved counter 
(since which cluster can perform historical rebalancing) with corresponding 
node.
This will let us know:
 ## Whether history was reserved at all
 ## How much reserved history we lack to perform a historical rebalancing
 ## I see resulting output like this:
Historical rebalancing wasn't scheduled for some partitions:
 History wasn't reserved for: [list of partitions and groups]
 History was reserved, but minimum present counter is less than maximum 
reserved: [[grp=GRP, part=ID, minCntr=cntr, minNodeId=ID, maxReserved=cntr, 
maxReservedNodeId=ID], ...]
 ## We can also aggregate previous message by (minNodeId) to easily find the 
exact node (or nodes) which were the reason of full rebalance.
 # Log results of reserveHistoryForExchange(). They can be compactly 
represented as mappings: (grpId -> checkpoint (id, timestamp)). For every 
group, also log message about why the previous checkpoint wasn't successfully 
reserved.
There can be three reasons:
 ## Previous checkpoint simply isn't present in the history (the oldest is 
reserved)
 ## WAL reservation failure (call below returned false)

{code:java}
chpEntry = entry(cpTs);boolean reserved =  
cctx.wal().reserve(chpEntry.checkpointMark());// If checkpoint WAL history 
can't be reserved, stop searching.
if (!reserved)
  break;
{code}

 ## Checkpoint was marked as inapplicable for historical rebalancing

{code:java}
for (Integer grpId : new HashSet<>(groupsAndPartitions.keySet()))
  if (!isCheckpointApplicableForGroup(grpId, chpEntry))
groupsAndPartitions.remove(grpId);
{code}


> Disadvantages in log of historical rebalance
> 
>
> Key: IGNITE-12935
> URL: https://issues.apache.org/jira/browse/IGNITE-12935
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> # Mention in the log only partitions for which there are no nodes that suit 
> as historical supplier
>  For these partitions, print minimal counter (since which we should perform 
> historical rebalancing) with corresponding node and maximum reserved counter 
> (since which cluster can perform historical rebalancing) with corresponding 
> node.
>  This will let us know:
>  ## Whether history was reserved at all
>  ## How much reserved history we lack to perform a historical rebalancing
>  ## I see resulting output like this:
>  Historical rebalancing wasn't scheduled for some partitions:
>  History wasn't reserved for: [list of partitions and groups]
>  History was reserved, but minimum present counter is less than maximum 
> reserved: [[grp=GRP, part=ID, minCntr=cntr, 

[jira] [Commented] (IGNITE-12795) Partially revert changes to atomic caches introduced in IGNITE-11797

2020-04-24 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin commented on IGNITE-12795:
--

Hello [~ascherbakov],

The fix looks good to me. Please proceed with the merge.

> Partially revert changes to atomic caches introduced in IGNITE-11797
> 
>
> Key: IGNITE-12795
> URL: https://issues.apache.org/jira/browse/IGNITE-12795
> Project: Ignite
>  Issue Type: Bug
>  Components: cache
>Affects Versions: 2.8
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Blocker
> Fix For: 2.8.1
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> These changes can trigger node failure during update on backup:
> Better fix for atomics is needed.
> {noformat}
> class org.apache.ignite.IgniteCheckedException: Failed to update the counter 
> [newVal=173, curState=Counter [lwm=172, holes={173=Item [start=173, 
> delta=1]}, maxApplied=174, hwm=173]]
> at 
> org.apache.ignite.internal.processors.cache.PartitionUpdateCounterTrackingImpl.update(PartitionUpdateCounterTrackingImpl.java:152)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateCounter(IgniteCacheOffheapManagerImpl.java:1578)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateCounter(GridCacheOffheapManager.java:2198)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.nextUpdateCounter(GridDhtLocalPartition.java:995)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry.nextPartitionCounter(GridDhtCacheEntry.java:104)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6434)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6190)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5881)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:3995)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3889)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2020)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1904)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1656)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2450)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3362)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:139)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:306)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
> at 
> org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1637)
> at 
> 

[jira] [Updated] (IGNITE-12933) Node failed after put incorrect key class for indexed type to transactional cache

2020-04-24 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-12933:
---
Description: 
Node failed after put incorrect key class for indexed type to the transactional 
cache when indexing is enabled.

Reproducer:
{code:java}
public class IndexedTypesTest extends GridCommonAbstractTest {
private boolean failed;

@Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
return super.getConfiguration(igniteInstanceName)
.setFailureHandler((ignite, ctx) -> failed = true)
.setCacheConfiguration(new CacheConfiguration<>(DEFAULT_CACHE_NAME)
.setAtomicityMode(TRANSACTIONAL)
.setIndexedTypes(String.class, String.class));
}

@Test
public void testPutIndexedType() throws Exception {
Ignite ignite = startGrids(2);

for (int i = 0; i < 10; i++) {
try {
ignite.cache(DEFAULT_CACHE_NAME).put(i, "val" + i);
}
catch (Exception ignore) {
}
}

assertFalse(failed);
}
}
{code}
Node failed with exception:
{noformat}
[2020-04-22 
17:05:34,524][ERROR][sys-stripe-11-#76%cache.IndexedTypesTest1%][IgniteTestResources]
 Critical system error detected. Will be handled accordingly to configured 
handler 
[hnd=o.a.i.i.processors.cache.IndexedTypesTest$$Lambda$115/0x00080024d040@147237db,
 failureCtx=FailureContext [type=CRITICAL_ERROR, err=class 
o.a.i.i.transactions.IgniteTxHeuristicCheckedException: Committing a 
transaction has produced runtime exception]]
class 
org.apache.ignite.internal.transactions.IgniteTxHeuristicCheckedException: 
Committing a transaction has produced runtime exception
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxAdapter.heuristicException(IgniteTxAdapter.java:800)
at 
org.apache.ignite.internal.processors.cache.distributed.GridDistributedTxRemoteAdapter.commitIfLocked(GridDistributedTxRemoteAdapter.java:838)
at 
org.apache.ignite.internal.processors.cache.distributed.GridDistributedTxRemoteAdapter.commitRemoteTx(GridDistributedTxRemoteAdapter.java:893)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.finish(IgniteTxHandler.java:1502)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.processDhtTxPrepareRequest(IgniteTxHandler.java:1233)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler$5.apply(IgniteTxHandler.java:229)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler$5.apply(IgniteTxHandler.java:227)
at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
at 
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1847)
at 
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1472)
at 
org.apache.ignite.internal.managers.communication.GridIoManager$9.run(GridIoManager.java:1367)
at 
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:565)
at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to update 
index, incorrect key class [expCls=java.lang.String, 
actualCls=java.lang.Integer]
at 
org.apache.ignite.internal.processors.query.GridQueryProcessor.typeByValue(GridQueryProcessor.java:2223)
at 
org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:2092)
at 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:410)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.finishUpdate(IgniteCacheOffheapManagerImpl.java:2627)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1713)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1688)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:445)
at 

[jira] [Commented] (IGNITE-12795) Partially revert changes to atomic caches introduced in IGNITE-11797

2020-04-24 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov commented on IGNITE-12795:


The core problem is related to atomic protocol - it can not guarantee all 
updates are received by backups and leaves gaps in the counters potentially 
forever. 
It doensn't compatibe in current state with tracking counter.



> Partially revert changes to atomic caches introduced in IGNITE-11797
> 
>
> Key: IGNITE-12795
> URL: https://issues.apache.org/jira/browse/IGNITE-12795
> Project: Ignite
>  Issue Type: Bug
>  Components: cache
>Affects Versions: 2.8
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Blocker
> Fix For: 2.8.1
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> These changes can trigger node failure during update on backup:
> Better fix for atomics is needed.
> {noformat}
> class org.apache.ignite.IgniteCheckedException: Failed to update the counter 
> [newVal=173, curState=Counter [lwm=172, holes={173=Item [start=173, 
> delta=1]}, maxApplied=174, hwm=173]]
> at 
> org.apache.ignite.internal.processors.cache.PartitionUpdateCounterTrackingImpl.update(PartitionUpdateCounterTrackingImpl.java:152)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateCounter(IgniteCacheOffheapManagerImpl.java:1578)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateCounter(GridCacheOffheapManager.java:2198)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.nextUpdateCounter(GridDhtLocalPartition.java:995)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry.nextPartitionCounter(GridDhtCacheEntry.java:104)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6434)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6190)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5881)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:3995)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3889)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2020)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1904)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1656)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2450)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3362)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:139)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:306)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
> at 
> 

[jira] [Comment Edited] (IGNITE-12795) Partially revert changes to atomic caches introduced in IGNITE-11797

2020-04-24 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov edited comment on IGNITE-12795 at 4/24/20, 9:05 AM:
--

The root cause is related to atomic protocol - it can not guarantee all updates 
are received by backups and leaves gaps in the counters potentially forever. 
It doensn't compatibe in current state with tracking counter.




was (Author: ascherbakov):
The core problem is related to atomic protocol - it can not guarantee all 
updates are received by backups and leaves gaps in the counters potentially 
forever. 
It doensn't compatibe in current state with tracking counter.



> Partially revert changes to atomic caches introduced in IGNITE-11797
> 
>
> Key: IGNITE-12795
> URL: https://issues.apache.org/jira/browse/IGNITE-12795
> Project: Ignite
>  Issue Type: Bug
>  Components: cache
>Affects Versions: 2.8
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Blocker
> Fix For: 2.8.1
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> These changes can trigger node failure during update on backup:
> Better fix for atomics is needed.
> {noformat}
> class org.apache.ignite.IgniteCheckedException: Failed to update the counter 
> [newVal=173, curState=Counter [lwm=172, holes={173=Item [start=173, 
> delta=1]}, maxApplied=174, hwm=173]]
> at 
> org.apache.ignite.internal.processors.cache.PartitionUpdateCounterTrackingImpl.update(PartitionUpdateCounterTrackingImpl.java:152)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateCounter(IgniteCacheOffheapManagerImpl.java:1578)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateCounter(GridCacheOffheapManager.java:2198)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.nextUpdateCounter(GridDhtLocalPartition.java:995)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry.nextPartitionCounter(GridDhtCacheEntry.java:104)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6434)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6190)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5881)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:3995)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3889)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2020)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1904)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1656)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2450)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3362)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:139)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:306)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
> at 
> 

[jira] [Commented] (IGNITE-12795) Partially revert changes to atomic caches introduced in IGNITE-11797

2020-04-24 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov commented on IGNITE-12795:


By some cryptic reason bot doesn't allow to post visa.

TC run results avaialble by link [1]

[1] 
https://mtcga.gridgain.com/pr.html?serverId=apache=IgniteTests24Java8_RunAll=pull%2F7718%2Fhead=Latest

> Partially revert changes to atomic caches introduced in IGNITE-11797
> 
>
> Key: IGNITE-12795
> URL: https://issues.apache.org/jira/browse/IGNITE-12795
> Project: Ignite
>  Issue Type: Bug
>  Components: cache
>Affects Versions: 2.8
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Blocker
> Fix For: 2.8.1
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> These changes can trigger node failure during update on backup:
> Better fix for atomics is needed.
> {noformat}
> class org.apache.ignite.IgniteCheckedException: Failed to update the counter 
> [newVal=173, curState=Counter [lwm=172, holes={173=Item [start=173, 
> delta=1]}, maxApplied=174, hwm=173]]
> at 
> org.apache.ignite.internal.processors.cache.PartitionUpdateCounterTrackingImpl.update(PartitionUpdateCounterTrackingImpl.java:152)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateCounter(IgniteCacheOffheapManagerImpl.java:1578)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateCounter(GridCacheOffheapManager.java:2198)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.nextUpdateCounter(GridDhtLocalPartition.java:995)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry.nextPartitionCounter(GridDhtCacheEntry.java:104)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6434)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6190)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5881)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:3995)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3889)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2020)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1904)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1656)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2450)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3362)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:139)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:306)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:109)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:308)
> at 
> 

[jira] [Comment Edited] (IGNITE-12795) Partially revert changes to atomic caches introduced in IGNITE-11797

2020-04-24 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov edited comment on IGNITE-12795 at 4/24/20, 8:50 AM:
--

By some cryptic reason TC bot doesn't allow to post visa.

TC run results avaialble by link [1]

[1] 
https://mtcga.gridgain.com/pr.html?serverId=apache=IgniteTests24Java8_RunAll=pull%2F7718%2Fhead=Latest


was (Author: ascherbakov):
By some cryptic reason bot doesn't allow to post visa.

TC run results avaialble by link [1]

[1] 
https://mtcga.gridgain.com/pr.html?serverId=apache=IgniteTests24Java8_RunAll=pull%2F7718%2Fhead=Latest

> Partially revert changes to atomic caches introduced in IGNITE-11797
> 
>
> Key: IGNITE-12795
> URL: https://issues.apache.org/jira/browse/IGNITE-12795
> Project: Ignite
>  Issue Type: Bug
>  Components: cache
>Affects Versions: 2.8
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Blocker
> Fix For: 2.8.1
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> These changes can trigger node failure during update on backup:
> Better fix for atomics is needed.
> {noformat}
> class org.apache.ignite.IgniteCheckedException: Failed to update the counter 
> [newVal=173, curState=Counter [lwm=172, holes={173=Item [start=173, 
> delta=1]}, maxApplied=174, hwm=173]]
> at 
> org.apache.ignite.internal.processors.cache.PartitionUpdateCounterTrackingImpl.update(PartitionUpdateCounterTrackingImpl.java:152)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.updateCounter(IgniteCacheOffheapManagerImpl.java:1578)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.updateCounter(GridCacheOffheapManager.java:2198)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.nextUpdateCounter(GridDhtLocalPartition.java:995)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry.nextPartitionCounter(GridDhtCacheEntry.java:104)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.update(GridCacheMapEntry.java:6434)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:6190)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry$AtomicCacheUpdateClosure.call(GridCacheMapEntry.java:5881)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.invokeClosure(BPlusTree.java:3995)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$Invoke.access$5700(BPlusTree.java:3889)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invokeDown(BPlusTree.java:2020)
> at 
> org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.invoke(BPlusTree.java:1904)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke0(IgniteCacheOffheapManagerImpl.java:1656)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.invoke(IgniteCacheOffheapManagerImpl.java:1639)
> at 
> org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.invoke(GridCacheOffheapManager.java:2450)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.invoke(IgniteCacheOffheapManagerImpl.java:436)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processDhtAtomicUpdateRequest(GridDhtAtomicCache.java:3362)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$600(GridDhtAtomicCache.java:139)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:311)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$7.apply(GridDhtAtomicCache.java:306)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1142)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:591)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:392)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:318)
> at 
> 

[jira] [Commented] (IGNITE-12788) Cluster achieved fully rebalanced (PME-free ready) state metric

2020-04-24 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov commented on IGNITE-12788:
-

[~avinogradov],

I see. My mistake. Thank you for the clarification. I've specified both 2.8.1 
and 2.9.

> Cluster achieved fully rebalanced (PME-free ready) state metric
> ---
>
> Key: IGNITE-12788
> URL: https://issues.apache.org/jira/browse/IGNITE-12788
> Project: Ignite
>  Issue Type: Task
>Reporter: Anton Vinogradov
>Assignee: Nikolay Izhikov
>Priority: Major
> Fix For: 2.9, 2.8.1
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Currently, there is no metric responsible for "PME-free ready state achieved" 
> delivery.
> {{GridDhtPartitionsExchangeFuture#rebalanced}} can be used to provide such 
> metric.
> Seems, we should update metric on each 
> {{GridDhtPartitionsExchangeFuture#onDone}}.
> P.s. Late Affinity Assignment should always set {{true}} to metric value.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12788) Cluster achieved fully rebalanced (PME-free ready) state metric

2020-04-24 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov updated IGNITE-12788:

Fix Version/s: 2.9

> Cluster achieved fully rebalanced (PME-free ready) state metric
> ---
>
> Key: IGNITE-12788
> URL: https://issues.apache.org/jira/browse/IGNITE-12788
> Project: Ignite
>  Issue Type: Task
>Reporter: Anton Vinogradov
>Assignee: Nikolay Izhikov
>Priority: Major
> Fix For: 2.9, 2.8.1
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Currently, there is no metric responsible for "PME-free ready state achieved" 
> delivery.
> {{GridDhtPartitionsExchangeFuture#rebalanced}} can be used to provide such 
> metric.
> Seems, we should update metric on each 
> {{GridDhtPartitionsExchangeFuture#onDone}}.
> P.s. Late Affinity Assignment should always set {{true}} to metric value.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12788) Cluster achieved fully rebalanced (PME-free ready) state metric

2020-04-24 Thread Anton Vinogradov (Jira)


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

Anton Vinogradov commented on IGNITE-12788:
---

[~PetrovMikhail]

"Fixed at 2.8.1" does not mean it was fixed at 2.9 since
 * 2.8.1 can be released after 2.9 
 * 2.8.1 can be released before 2.9, but will not be merged to 2.9 because of 
some reason.

And the main problem here that you will not have this issue at 2.9 Release 
Notes because the Jira filter will not show it.

> Cluster achieved fully rebalanced (PME-free ready) state metric
> ---
>
> Key: IGNITE-12788
> URL: https://issues.apache.org/jira/browse/IGNITE-12788
> Project: Ignite
>  Issue Type: Task
>Reporter: Anton Vinogradov
>Assignee: Nikolay Izhikov
>Priority: Major
> Fix For: 2.8.1
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Currently, there is no metric responsible for "PME-free ready state achieved" 
> delivery.
> {{GridDhtPartitionsExchangeFuture#rebalanced}} can be used to provide such 
> metric.
> Seems, we should update metric on each 
> {{GridDhtPartitionsExchangeFuture#onDone}}.
> P.s. Late Affinity Assignment should always set {{true}} to metric value.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)