[jira] [Created] (IGNITE-13085) Download page broken link for 2.8.0

2020-05-27 Thread Sebb (Jira)
Sebb created IGNITE-13085:
-

 Summary: Download page broken link for 2.8.0
 Key: IGNITE-13085
 URL: https://issues.apache.org/jira/browse/IGNITE-13085
 Project: Ignite
  Issue Type: Bug
Reporter: Sebb


The download page has broken links for version 2.8.0

It looks like the release was removed from the mirrors without updating the 
page to point to the archive server.

To reduce the likelihood of broken links, it's best to allow some overlap 
between old and new releases, e.g.

- publish new release (2.8.1) to dist.apache.org/release
- wait a day or so for mirrors to catch up
- update the download page to include the new release (2.8.1)
- change the previous release (2.8.0) to link to the archive server
- send the announce mail for the new release (2.8.1)
- remove the previous release (2.8.0) from dist.apache.org/release

This should minimise the chance of a user encountering a broken link.



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


[jira] [Commented] (IGNITE-13074) Thin client: Default compute cluster group should be "server nodes", but currently "all nodes"

2020-05-27 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-13074:


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

> Thin client: Default compute cluster group should be "server nodes", but 
> currently "all nodes"
> --
>
> Key: IGNITE-13074
> URL: https://issues.apache.org/jira/browse/IGNITE-13074
> Project: Ignite
>  Issue Type: Bug
>  Components: thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When executing compute tasks from thin client without specifying cluster 
> group, tasks should be executed only on server nodes. But currently client 
> nodes are also included. 



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


[jira] [Updated] (IGNITE-12625) Thin client: Marshaling/unmarshaling of objects performed twice

2020-05-27 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-12625:
---
Description: 
For each thin client cache operation marshaling/unmarshaling of objects 
performed twice. For example, cache "put" operation marshal object on the 
client-side, then unmarshal object (with keep binaries) on the server-side and 
marshal it again before putting it to the cache. It causes some undesirable 
effects. For example, references to the same binary object in a collection ( 
{{new ArrayList(Arrays.asList(person, person))}} ) deserialized as different 
objects.

Reproducer:
{code:java}
try (IgniteClient client = startClient()) {
ClientCache cache = 
client.getOrCreateCache(DEFAULT_CACHE_NAME);
Person person = new Person(0, "name");
cache.put(0, new Object[] {person, person} );
Object[] res = cache.get(0);
assertTrue(res[0] == res[1]);
}{code}
Also, we need to unwrap binaries recursively since all objects inside 
collections, arrays and maps become binary objects after 
marshaling/unmarshalling (see IGNITE-12468)

Also, we don't know do we really need to deserialize binary objects. If object 
was originally binary there is no evidence of this after 
marshaling/unmarshaling on server-side. This leads to problems when a binary 
object was created for unknown class.

Reproducer:
{code:java}
cache.put(0, client.binary().builder("TestType").setField("test", 
"val").build())
cache.get(0){code}
Will throw exception:
{noformat}
class org.apache.ignite.binary.BinaryInvalidTypeException: TestType
at 
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:762)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
at 
org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319)
at 
org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
at 
org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:558)
at 
org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:547){noformat}
To avoid double marshaling we could pass byte array from request content to 
cache directly (for example using {{CacheObject}}), but we don't have object 
size in thin client protocol, so in any case, we need to traverse the objects. 
Also, we don't have the ability to get {{CacheObject}} from the cache now, so 
such an approach will only work in one way, for "put" operations, but not for 
"get" operations.

  was:
For each thin client cache operation marshaling/unmarshaling of objects 
performed twice. For example, cache "put" operation marshal object on the 
client-side, then unmarshal object (with keep binaries) on the server-side and 
marshal it again before putting it to the cache. It causes some undesirable 
effects. For example, references to the same binary object in a collection ( 
{{new ArrayList(Arrays.asList(person, person))}} ) deserialized as different 
objects.

Reproducer:
{code:java}
try (IgniteClient client = startClient()) {
ClientCache cache = 
client.getOrCreateCache(DEFAULT_CACHE_NAME);
Person person = new Person(0, "name");
cache.put(0, new Object[] {person, person} );
Object[] res = cache.get(0);
assertTrue(res[0] == res[1]);
}{code}
Also, we need to unwrap binaries recursively since all objects inside 
collections, arrays and maps become binary objects after 
marshaling/unmarshalling (see IGNITE-12468)

Also, we don't know do we really need to deserialize binary objects. If object 
was originally binary there is no evidence of this after 
marshaling/unmarshaling on server-side. This leads to problems when a binary 
object was created for unknown class.

Reproducer:
{code:java}
cache.put(0, client.binary().builder("TestType").setField("test", 
"val").build())
cache.get(0){code}
Will throw exception:
{noformat}
class org.apache.ignite.binary.BinaryInvalidTypeException: TestTypeclass 
org.apache.ignite.binary.BinaryInvalidTypeException: TestType
at 
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:762)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
at 
org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319)
at 
org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
at 
org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:558)
at 

[jira] [Updated] (IGNITE-12625) Thin client: Marshaling/unmarshaling of objects performed twice

2020-05-27 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-12625:
---
Description: 
For each thin client cache operation marshaling/unmarshaling of objects 
performed twice. For example, cache "put" operation marshal object on the 
client-side, then unmarshal object (with keep binaries) on the server-side and 
marshal it again before putting it to the cache. It causes some undesirable 
effects. For example, references to the same binary object in a collection ( 
{{new ArrayList(Arrays.asList(person, person))}} ) deserialized as different 
objects.

Reproducer:
{code:java}
try (IgniteClient client = startClient()) {
ClientCache cache = 
client.getOrCreateCache(DEFAULT_CACHE_NAME);
Person person = new Person(0, "name");
cache.put(0, new Object[] {person, person} );
Object[] res = cache.get(0);
assertTrue(res[0] == res[1]);
}{code}
Also, we need to unwrap binaries recursively since all objects inside 
collections, arrays and maps become binary objects after 
marshaling/unmarshalling (see IGNITE-12468)

Also, we don't know do we really need to deserialize binary objects. If object 
was originally binary there is no evidence of this after 
marshaling/unmarshaling on server-side. This leads to problems when a binary 
object was created for unknown class.

Reproducer:
{code:java}
cache.put(0, client.binary().builder("TestType").setField("test", 
"val").build())
cache.get(0){code}
Will throw exception:
{noformat}
class org.apache.ignite.binary.BinaryInvalidTypeException: TestTypeclass 
org.apache.ignite.binary.BinaryInvalidTypeException: TestType
at 
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:762)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
at 
org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319)
at 
org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
at 
org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:558)
at 
org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:547){noformat}
To avoid double marshaling we could pass byte array from request content to 
cache directly (for example using {{CacheObject}}), but we don't have object 
size in thin client protocol, so in any case, we need to traverse the objects. 
Also, we don't have the ability to get {{CacheObject}} from the cache now, so 
such an approach will only work in one way, for "put" operations, but not for 
"get" operations.

  was:
For each thin client cache operation marshaling/unmarshaling of objects 
performed twice. For example, cache "put" operation marshal object on the 
client-side, then unmarshal object (with keep binaries) on the server-side and 
marshal it again before putting it to the cache. It causes some undesirable 
effects. For example, references to the same binary object in a collection ( 
{{new ArrayList(Arrays.asList(person, person))}} ) deserialized as different 
objects.

Reproducer:
{code:java}
try (IgniteClient client = startClient()) {
ClientCache cache = 
client.getOrCreateCache(DEFAULT_CACHE_NAME);
Person person = new Person(0, "name");
cache.put(0, new Object[] {person, person} );
Object[] res = cache.get(0);
assertTrue(res[0] == res[1]);
}{code}
Also, we need to unwrap binaries recursively since all objects inside 
collections, arrays and maps become binary objects after 
marshaling/unmarshalling (see IGNITE-12468)

Also, we don't know do we really need to deserialize binary objects. If object 
was originally binary there is no evidence of this after 
marshaling/unmarshaling on server-side. This leads to problems when a binary 
object was created for unknown class.

Reproducer:

 
{code:java}
cache.put(0, client.binary().builder("TestType").setField("test", 
"val").build())
cache.get(0){code}
Will throw exception:
{noformat}
class org.apache.ignite.binary.BinaryInvalidTypeException: TestTypeclass 
org.apache.ignite.binary.BinaryInvalidTypeException: TestType
at 
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:762)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
at 
org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319)
at 
org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
at 
org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:558)
  

[jira] [Updated] (IGNITE-12625) Thin client: Marshaling/unmarshaling of objects performed twice

2020-05-27 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-12625:
---
Description: 
For each thin client cache operation marshaling/unmarshaling of objects 
performed twice. For example, cache "put" operation marshal object on the 
client-side, then unmarshal object (with keep binaries) on the server-side and 
marshal it again before putting it to the cache. It causes some undesirable 
effects. For example, references to the same binary object in a collection ( 
{{new ArrayList(Arrays.asList(person, person))}} ) deserialized as different 
objects.

Reproducer:
{code:java}
try (IgniteClient client = startClient()) {
ClientCache cache = 
client.getOrCreateCache(DEFAULT_CACHE_NAME);
Person person = new Person(0, "name");
cache.put(0, new Object[] {person, person} );
Object[] res = cache.get(0);
assertTrue(res[0] == res[1]);
}{code}
Also, we need to unwrap binaries recursively since all objects inside 
collections, arrays and maps become binary objects after 
marshaling/unmarshalling (see IGNITE-12468)

Also, we don't know do we really need to deserialize binary objects. If object 
was originally binary there is no evidence of this after 
marshaling/unmarshaling on server-side. This leads to problems when a binary 
object was created for unknown class.

Reproducer:

 
{code:java}
cache.put(0, client.binary().builder("TestType").setField("test", 
"val").build())
cache.get(0){code}
Will throw exception:
{noformat}
class org.apache.ignite.binary.BinaryInvalidTypeException: TestTypeclass 
org.apache.ignite.binary.BinaryInvalidTypeException: TestType
at 
org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:762)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
at 
org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319)
at 
org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
at 
org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:558)
at 
org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:547){noformat}
 

To avoid double marshaling we could pass byte array from request content to 
cache directly (for example using {{CacheObject}}), but we don't have object 
size in thin client protocol, so in any case, we need to traverse the objects. 
Also, we don't have the ability to get {{CacheObject}} from the cache now, so 
such an approach will only work in one way, for "put" operations, but not for 
"get" operations.

  was:
For each thin client cache operation marshaling/unmarshaling of objects 
performed twice. For example, cache "put" operation marshal object on the 
client-side, then unmarshal object (with keep binaries) on the server-side and 
marshal it again before putting it to the cache. It causes some undesirable 
effects. For example, references to the same binary object in a collection ( 
{{new ArrayList(Arrays.asList(person, person))}} ) deserialized as different 
objects.

Reproducer:
{code:java}
try (IgniteClient client = startClient()) {
ClientCache cache = 
client.getOrCreateCache(DEFAULT_CACHE_NAME);
Person person = new Person(0, "name");
cache.put(0, new Object[] {person, person} );
Object[] res = cache.get(0);
assertTrue(res[0] == res[1]);
}{code}
To avoid double marshalling we could pass byte array from request content to 
cache directly (for example using {{CacheObject}}), but we don't have object 
size in thin client protocol, so in any case, we need to traverse the objects. 
Also, we don't have the ability to get {{CacheObject}} from the cache now, so 
such an approach will only work in one way, for "put" operations, but not for 
"get" operations.


> Thin client: Marshaling/unmarshaling of objects performed twice
> ---
>
> Key: IGNITE-12625
> URL: https://issues.apache.org/jira/browse/IGNITE-12625
> Project: Ignite
>  Issue Type: Bug
>  Components: binary, thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>
> For each thin client cache operation marshaling/unmarshaling of objects 
> performed twice. For example, cache "put" operation marshal object on the 
> client-side, then unmarshal object (with keep binaries) on the server-side 
> and marshal it again before putting it to the cache. It causes some 
> undesirable effects. For example, references to the same binary object in a 
> collection ( {{new ArrayList(Arrays.asList(person, person))}} ) deserialized 
> as 

[jira] [Updated] (IGNITE-12967) Start cluster snapshot from client node

2020-05-27 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov updated IGNITE-12967:
-
Release Note: Add support starting snapshot from a client node

> Start cluster snapshot from client node
> ---
>
> Key: IGNITE-12967
> URL: https://issues.apache.org/jira/browse/IGNITE-12967
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
>  Labels: iep-43
> Fix For: 2.9
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Users should be able to start cluster snapshots from client node by sending 
> compute requests on server node.



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


[jira] [Updated] (IGNITE-12978) Cancel snapshot command

2020-05-27 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov updated IGNITE-12978:
-
Ignite Flags: Release Notes Required
Release Note: Add canceling snapshot command

> Cancel snapshot command
> ---
>
> Key: IGNITE-12978
> URL: https://issues.apache.org/jira/browse/IGNITE-12978
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
>  Labels: iep-43
> Fix For: 2.9
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> Add the ability to cancel snapshot operation through JMX and command line.



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


[jira] [Updated] (IGNITE-12967) Start cluster snapshot from client node

2020-05-27 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov updated IGNITE-12967:
-
Ignite Flags: Release Notes Required

> Start cluster snapshot from client node
> ---
>
> Key: IGNITE-12967
> URL: https://issues.apache.org/jira/browse/IGNITE-12967
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
>  Labels: iep-43
> Fix For: 2.9
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Users should be able to start cluster snapshots from client node by sending 
> compute requests on server node.



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


[jira] [Updated] (IGNITE-12961) Start snapshot operation via control.sh

2020-05-27 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov updated IGNITE-12961:
-
Ignite Flags: Release Notes Required
Release Note: Start snapshot from control.sh support

> Start snapshot operation via control.sh
> ---
>
> Key: IGNITE-12961
> URL: https://issues.apache.org/jira/browse/IGNITE-12961
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
>  Labels: iep-43
> Fix For: 2.9
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Add the ability to start snapshot operation via {{control.sh}} command line.



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


[jira] [Updated] (IGNITE-12961) Start snapshot operation via control.sh

2020-05-27 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov updated IGNITE-12961:
-
Release Note: Add start snapshot command to control.sh  (was: Start 
snapshot from control.sh support)

> Start snapshot operation via control.sh
> ---
>
> Key: IGNITE-12961
> URL: https://issues.apache.org/jira/browse/IGNITE-12961
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
>  Labels: iep-43
> Fix For: 2.9
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Add the ability to start snapshot operation via {{control.sh}} command line.



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


[jira] [Updated] (IGNITE-11998) Fix DataPageScan for fragmented pages.

2020-05-27 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov updated IGNITE-11998:
-
Fix Version/s: (was: 2.9)

> Fix DataPageScan for fragmented pages.
> --
>
> Key: IGNITE-11998
> URL: https://issues.apache.org/jira/browse/IGNITE-11998
> Project: Ignite
>  Issue Type: Bug
>Reporter: Ivan Bessonov
>Assignee: Maxim Muzafarov
>Priority: Blocker
>
> Fragmented pages crash JVM when accessed by DataPageScan scanner/query 
> optimized scanner. It happens when scanner accesses data in later chunk in 
> fragmented entry but treats it like the first one, expecting length of the 
> payload, which is absent and replaced with raw entry data.



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


[jira] [Commented] (IGNITE-12978) Cancel snapshot command

2020-05-27 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov commented on IGNITE-12978:
--

[~NSAmelchev] 

Thank you for the review. Merged to the master branch.

> Cancel snapshot command
> ---
>
> Key: IGNITE-12978
> URL: https://issues.apache.org/jira/browse/IGNITE-12978
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
>  Labels: iep-43
> Fix For: 2.9
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> Add the ability to cancel snapshot operation through JMX and command line.



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


[jira] [Resolved] (IGNITE-12900) Calcite integration. Use RowHandler to access fields.

2020-05-27 Thread Igor Seliverstov (Jira)


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

Igor Seliverstov resolved IGNITE-12900.
---
Release Note: Done in scope of IGNITE-12715
  Resolution: Done

> Calcite integration. Use RowHandler to access fields.
> -
>
> Key: IGNITE-12900
> URL: https://issues.apache.org/jira/browse/IGNITE-12900
> Project: Ignite
>  Issue Type: Task
>Reporter: Igor Seliverstov
>Priority: Major
>
> Currently only Object[] can be used as a row because most of execution nodes 
> require Object[] as a row type. Let's use generic row types with appropriate 
> RowHandler in execution nodes and compiled expressions to get more 
> flexibility.



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


[jira] [Commented] (IGNITE-11393) Create IgniteLinkTaglet.toString() implementation for Java9+

2020-05-27 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov commented on IGNITE-11393:


Seems like some of java8 javadoc builds have been broken with the new version 
of maven-javadoc-plugin. Further investigation needed.

> Create IgniteLinkTaglet.toString() implementation for Java9+
> 
>
> Key: IGNITE-11393
> URL: https://issues.apache.org/jira/browse/IGNITE-11393
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Dmitry Pavlov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> New implementation was added according to the new Java API for Javadoc.
> But the main method kept empty, need to implement toString() to process 
> IgniteLink annotation



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


[jira] [Commented] (IGNITE-10959) Memory leaks in continuous query handlers

2020-05-27 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov commented on IGNITE-10959:
--

[~Pavlukhin] 

Hello, I've found some code changes probably related to the current issue in 
GGCE (suppose associated with GG-17432). At first glance, they related to 
memory consumption. 

I'm not diving deep into those details yet, but can you please share some 
details at those fix? I'm going to continue the investigation, should I? 

Are there any corner cases left uncovered? I've applied those changes and 
checked the attached reproducer {{CacheContinuousQueryMemoryUsageTest}} 
locally, it seems it still fails (the \{{backupQ}} remains uncleared).

> Memory leaks in continuous query handlers
> -
>
> Key: IGNITE-10959
> URL: https://issues.apache.org/jira/browse/IGNITE-10959
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.7
>Reporter: Denis Mekhanikov
>Assignee: Maxim Muzafarov
>Priority: Critical
> Attachments: CacheContinuousQueryMemoryUsageTest.java, 
> CacheContinuousQueryMemoryUsageTest.result, 
> CacheContinuousQueryMemoryUsageTest2.java, 
> Memory_blowup_in_Ignite_CacheContinuousQueryHandler.txt, 
> Memory_blowup_in_Ignite_CacheContinuousQueryHandler.txt, 
> Memory_blowup_in_Ignite_CacheContinuousQueryHandler.txt, 
> continuousquery_leak_profile.png
>
>
> Continuous query handlers don't clear internal data structures after cache 
> events are processed.
> A test, that reproduces the problem, is attached.



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


[jira] [Updated] (IGNITE-12846) Docs: ml package org.apache.ignite.ml.knn.utils.indices have no description in binary release

2020-05-27 Thread Nikolay Izhikov (Jira)


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

Nikolay Izhikov updated IGNITE-12846:
-
Fix Version/s: (was: 2.8.1)
   2.9

> Docs: ml package org.apache.ignite.ml.knn.utils.indices have no description 
> in binary release
> -
>
> Key: IGNITE-12846
> URL: https://issues.apache.org/jira/browse/IGNITE-12846
> Project: Ignite
>  Issue Type: Bug
>  Components: documentation
>Affects Versions: 2.8
>Reporter: Stepan Pilschikov
>Assignee: Alexey Zinoviev
>Priority: Major
> Fix For: 2.9
>
>
> apache-ignite-2.8.0-bin/docs/javadoc/overview-summary.html does not contain 
> description block for org.apache.ignite.ml.knn.utils.indices
> Actual:
> {code}
> 
> 
>  href="org/apache/ignite/ml/knn/utils/indices/package-summary.html">org.apache.ignite.ml.knn.utils.indices
> 
> 
> {code}
> Expected:
> {code}
> 
> 
>  href="org/apache/ignite/ml/knn/utils/indices/package-summary.html">org.apache.ignite.ml.knn.utils.indices
> 
> [Some description]
> 
> {code}



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


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

2020-05-27 Thread Nikolay Izhikov (Jira)


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

Nikolay Izhikov updated IGNITE-12943:
-
Fix Version/s: (was: 2.8.1)
   2.9

> 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.9
>
>
> 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-10947) CPP: Fix documentation on how to build Ignite C++ on Linux

2020-05-27 Thread Nikolay Izhikov (Jira)


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

Nikolay Izhikov updated IGNITE-10947:
-
Fix Version/s: (was: 2.8.1)
   2.9

> CPP: Fix documentation on how to build Ignite C++ on Linux
> --
>
> Key: IGNITE-10947
> URL: https://issues.apache.org/jira/browse/IGNITE-10947
> Project: Ignite
>  Issue Type: Improvement
>  Components: documentation, platforms
>Reporter: Igor Sapego
>Priority: Major
> Fix For: 2.9
>
>
> We now have build step (IGNITE-10940) that performs following steps during 
> release of the binary package of the Ignite:
> {code}
> # libtoolize
> # aclocal
> # autoheader
> # automake --add-missing
> # autoreconf
> {code}
> So we now should change documentation, that users only need to run following 
> commands to build Ignite C++ from binary distribution of Ignite.
> {code}
> # ./configure
> # make
> {code}



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Attachment: FailureDetectionResearch.patch

> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: FailureDetectionResearch.patch, WorstCase_log.log, 
> WostCase.txt
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We should fix several drawbacks in the backward checking of failed node. They 
> prolongs node failure detection upto: ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’.
> Suggestions:
> 1) We should replace hardcoded timeout 100ms with a parameter like 
> failureDetectionTimeout:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100); // Make it not a constant.
>...
> }
> {code}
> 2) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false; // Make any error mean lost connection.
>}
>return false;
> }
> {code}
> 3) Maximal interval to check previous node should rely on actual failure 
> detection timeout:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; // Here should be a 
> timeout of failure detection.
>if (ok) {
>   // Check case when previous node suddenly died. This will speed up
>   // node failing.
>   ...
> }
> res.previousNodeAlive(ok);
> {code}
> 4) Remove hardcoded sleep of 200ms when marking previous node alive:
> {code:java}
> ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive(){
>...
>try {
>   Thread.sleep(200);
>}
>catch (InterruptedException e) {
>   Thread.currentThread().interrupt();
>}
>...
> }
> {code}



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


[jira] [Updated] (IGNITE-13084) Update BouncyCastle dependency for ignite-aws

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-13084:
--
Labels: security  (was: )

> Update BouncyCastle dependency for ignite-aws
> -
>
> Key: IGNITE-13084
> URL: https://issues.apache.org/jira/browse/IGNITE-13084
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.7.6
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>  Labels: security
>
> h3. bcprov-ext-jdk15on-1.54 has a lot of known  CVE's, so it must be updated 
> to fix potential security issues



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


[jira] [Created] (IGNITE-13084) Update BouncyCastle dependency for ignite-aws

2020-05-27 Thread Semyon Danilov (Jira)
Semyon Danilov created IGNITE-13084:
---

 Summary: Update BouncyCastle dependency for ignite-aws
 Key: IGNITE-13084
 URL: https://issues.apache.org/jira/browse/IGNITE-13084
 Project: Ignite
  Issue Type: Task
Affects Versions: 2.7.6
Reporter: Semyon Danilov
Assignee: Semyon Danilov


h3. bcprov-ext-jdk15on-1.54 has a lot of known  CVE's, so it must be updated to 
fix potential security issues



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


[jira] [Created] (IGNITE-13083) Double adding "onSegmentArchived" observer to SegmentArchivedStorage

2020-05-27 Thread Semyon Danilov (Jira)
Semyon Danilov created IGNITE-13083:
---

 Summary: Double adding "onSegmentArchived" observer to 
SegmentArchivedStorage
 Key: IGNITE-13083
 URL: https://issues.apache.org/jira/browse/IGNITE-13083
 Project: Ignite
  Issue Type: Bug
Affects Versions: 2.7.6
Reporter: Semyon Danilov
Assignee: Semyon Danilov


SegmentCompressStorage is build with static method 
SegmentCompressStorage#buildCompressStorage, where private constructor is 
called, and the same observer storage::onSegmentArchived is added to same 
SegmentArchivedStorage in constructor and in the static method. This can cause 
double call of SegmentCompressStorage#onSegmentArchived.



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


[jira] [Assigned] (IGNITE-5214) ConcurrentModificationException with enable DEBUG log level

2020-05-27 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev reassigned IGNITE-5214:
---

Assignee: Ilya Kasnacheev  (was: Nikolay Tikhonov)

> ConcurrentModificationException with enable DEBUG log level
> ---
>
> Key: IGNITE-5214
> URL: https://issues.apache.org/jira/browse/IGNITE-5214
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.0
>Reporter: Nikolay Tikhonov
>Assignee: Ilya Kasnacheev
>Priority: Major
> Attachments: IGNITE_5214.patch
>
>
> ConcurrentModificationException with 
> org.apache.ignite.continuous.query=DEBUG
> {noformat}
> Unexpected exception during cache update 
> java.util.ConcurrentModificationException: null
>   at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1211)
>   at java.util.TreeMap$EntryIterator.next(TreeMap.java:1247)
>   at java.util.TreeMap$EntryIterator.next(TreeMap.java:1242)
>   at java.util.AbstractMap.toString(AbstractMap.java:554)
>   at java.lang.String.valueOf(String.java:2994)
>   at java.lang.StringBuilder.append(StringBuilder.java:131)
>   at 
> org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler$PartitionRecovery.collectEntries(CacheContinuousQueryHandler.java:1132)
>   at 
> org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler.handleEvent(CacheContinuousQueryHandler.java:739)
>   at 
> org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler.onEntryUpdate(CacheContinuousQueryHandler.java:792)
>   at 
> org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler.access$800(CacheContinuousQueryHandler.java:91)
>   at 
> org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryHandler$1.onEntryUpdated(CacheContinuousQueryHandler.java:419)
>   at 
> org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryManager.onEntryUpdated(CacheContinuousQueryManager.java:347)
>   at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2669)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2390)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1792)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1632)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.mapSingle(GridNearAtomicAbstractUpdateFuture.java:263)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:494)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:436)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:208)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$23.apply(GridDhtAtomicCache.java:1152)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$23.apply(GridDhtAtomicCache.java:1150)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.asyncOp(GridDhtAtomicCache.java:847)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAsync0(GridDhtAtomicCache.java:1150)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.putAsync0(GridDhtAtomicCache.java:619)
>   at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.putAsync(GridCacheAdapter.java:2574)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.putIfAbsentAsync(GridDhtAtomicCache.java:664)
>   at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.putIfAbsent(GridDhtAtomicCache.java:657)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.putIfAbsent(IgniteCacheProxy.java:1451)
>   at 
> com.workday.fabric.ignite.management.IgniteManagementService.doExecute(IgniteManagementService.java:174)
>   at 
> com.workday.fabric.ignite.service.AbstractIgniteService.execute(AbstractIgniteService.java:94)
>   at 
> 

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

2020-05-27 Thread Anton Kalashnikov (Jira)


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

Anton Kalashnikov commented on IGNITE-12911:


[~ilyak] can you please clarify a little more your concerns?
>From my point of view, these are two different problems(Corrupt tree vs 
>incorrect binary object) on two different levels(primitive problem - incorrect 
>length of array vs conceptual problem - incorrect work with deduplicated 
>objects) in two different cases. 
Honestly, I a little confused about why we can't merge two independent tasks 
independently? Maybe I missed something and these tasks are not so independent 
as I think. Can you share your thoughts with me, please?
Secondly, it's impossible to fix  IGNITE-13080 without this fix because your 
test always would fail with CorruptTree

> 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
>Assignee: Anton Kalashnikov
>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
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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 
> 

[jira] [Updated] (IGNITE-13039) Get rid of possibility to change final static fields through reflection for test purpose.

2020-05-27 Thread Alexey Goncharuk (Jira)


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

Alexey Goncharuk updated IGNITE-13039:
--
Fix Version/s: 2.9

> Get rid of possibility to change final static fields through reflection for 
> test purpose.
> -
>
> Key: IGNITE-13039
> URL: https://issues.apache.org/jira/browse/IGNITE-13039
> Project: Ignite
>  Issue Type: Improvement
>  Components: general
>Affects Versions: 2.8
>Reporter: Stanilovsky Evgeny
>Assignee: Stanilovsky Evgeny
>Priority: Minor
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Rare for tests purpose there is a need for changing some private fields 
> through reflection.
> Changing *static final* fields in this manner could bring more tears, check 
> for example [1] and [2].
> [1] 
> https://stackoverflow.com/questions/3301635/change-private-static-final-field-using-java-reflection
> [2] http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28



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


[jira] [Assigned] (IGNITE-13082) Deadlock between topology update and CQ registration.

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov reassigned IGNITE-13082:
-

Assignee: Andrey Mashenkov

> Deadlock between topology update and CQ registration.
> -
>
> Key: IGNITE-13082
> URL: https://issues.apache.org/jira/browse/IGNITE-13082
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.7
>Reporter: Andrey Mashenkov
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: deadlock
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Relevant stack traces:Relevant stack traces:
>  
> {code:java}
> "sys-stripe-0-#65483%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85739 prio=5 os_prio=0 tid=0x7fda80139800 nid=0x5618 waiting on 
> condition [0x7fdc018e8000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfc138298> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
>  at 
> java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.lockListenerReadLock(GridCacheMapEntry.java:5032)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2262)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2574)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2034)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1854)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1668)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3239)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:139)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
>  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:1626)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1246)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.access$4300(GridIoManager.java:142)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1137)
>  at 
> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:50)
>  at 
> org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
>  at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) at 
> java.lang.Thread.run(Thread.java:748) 
> {code}
>  
> {code:java}
> "disco-notifier-worker-#65517%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85777 prio=5 os_prio=0 tid=0x7fda800a9800 nid=0x5639 waiting on 
> condition [0x7fdc006d9000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfbde5f30> (a 
> 

[jira] [Commented] (IGNITE-12359) Migrate RocketMQ module to ignite-extensions

2020-05-27 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev commented on IGNITE-12359:
--


We still have a mention of it in assembly/libs/README.txt - I think we should 
remove it alongside with some others. I'm not sure where this file goes to.

Otherwise, LGTM.

> Migrate RocketMQ module to ignite-extensions
> 
>
> Key: IGNITE-12359
> URL: https://issues.apache.org/jira/browse/IGNITE-12359
> Project: Ignite
>  Issue Type: Sub-task
>  Components: streaming
>Affects Versions: 2.8
>Reporter: Saikat Maitra
>Assignee: Saikat Maitra
>Priority: Major
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Migrate RocketMQ module to ignite-extensions
> [https://github.com/apache/ignite-extensions] 
> Details: 
> [https://cwiki.apache.org/confluence/display/IGNITE/IEP-36%3A+Modularization#IEP-36:Modularization-IndependentIntegrations]
> Discussion : 
> [http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Proposal-for-Ignite-Extensions-as-a-separate-Bahir-module-or-Incubator-project-td44064.html#a44107]



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


[jira] [Updated] (IGNITE-13082) Deadlock between topology update and CQ registration.

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-13082:
--
Fix Version/s: 2.9

> Deadlock between topology update and CQ registration.
> -
>
> Key: IGNITE-13082
> URL: https://issues.apache.org/jira/browse/IGNITE-13082
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.7
>Reporter: Andrey Mashenkov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Relevant stack traces:Relevant stack traces:
>  
> {code:java}
> "sys-stripe-0-#65483%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85739 prio=5 os_prio=0 tid=0x7fda80139800 nid=0x5618 waiting on 
> condition [0x7fdc018e8000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfc138298> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
>  at 
> java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.lockListenerReadLock(GridCacheMapEntry.java:5032)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2262)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2574)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2034)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1854)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1668)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3239)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:139)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
>  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:1626)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1246)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.access$4300(GridIoManager.java:142)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1137)
>  at 
> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:50)
>  at 
> org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
>  at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) at 
> java.lang.Thread.run(Thread.java:748) 
> {code}
>  
> {code:java}
> "disco-notifier-worker-#65517%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85777 prio=5 os_prio=0 tid=0x7fda800a9800 nid=0x5639 waiting on 
> condition [0x7fdc006d9000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfbde5f30> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
> 

[jira] [Updated] (IGNITE-13082) Deadlock between topology update and CQ registration.

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-13082:
--
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Deadlock between topology update and CQ registration.
> -
>
> Key: IGNITE-13082
> URL: https://issues.apache.org/jira/browse/IGNITE-13082
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.7
>Reporter: Andrey Mashenkov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Relevant stack traces:Relevant stack traces:
>  
> {code:java}
> "sys-stripe-0-#65483%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85739 prio=5 os_prio=0 tid=0x7fda80139800 nid=0x5618 waiting on 
> condition [0x7fdc018e8000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfc138298> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
>  at 
> java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.lockListenerReadLock(GridCacheMapEntry.java:5032)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2262)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2574)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2034)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1854)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1668)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3239)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:139)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
>  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:1626)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1246)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.access$4300(GridIoManager.java:142)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1137)
>  at 
> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:50)
>  at 
> org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
>  at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) at 
> java.lang.Thread.run(Thread.java:748) 
> {code}
>  
> {code:java}
> "disco-notifier-worker-#65517%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85777 prio=5 os_prio=0 tid=0x7fda800a9800 nid=0x5639 waiting on 
> condition [0x7fdc006d9000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfbde5f30> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> 

[jira] [Updated] (IGNITE-13082) Deadlock between topology update and CQ registration.

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-13082:
--
Labels: deadlock  (was: )

> Deadlock between topology update and CQ registration.
> -
>
> Key: IGNITE-13082
> URL: https://issues.apache.org/jira/browse/IGNITE-13082
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.7
>Reporter: Andrey Mashenkov
>Priority: Major
>  Labels: deadlock
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Relevant stack traces:Relevant stack traces:
>  
> {code:java}
> "sys-stripe-0-#65483%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85739 prio=5 os_prio=0 tid=0x7fda80139800 nid=0x5618 waiting on 
> condition [0x7fdc018e8000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfc138298> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
>  at 
> java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.lockListenerReadLock(GridCacheMapEntry.java:5032)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2262)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2574)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2034)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1854)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1668)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3239)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:139)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
>  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:1626)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1246)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.access$4300(GridIoManager.java:142)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1137)
>  at 
> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:50)
>  at 
> org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
>  at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) at 
> java.lang.Thread.run(Thread.java:748) 
> {code}
>  
> {code:java}
> "disco-notifier-worker-#65517%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85777 prio=5 os_prio=0 tid=0x7fda800a9800 nid=0x5639 waiting on 
> condition [0x7fdc006d9000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfbde5f30> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> 

[jira] [Updated] (IGNITE-13082) Deadlock between topology update and CQ registration.

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-13082:
--
Affects Version/s: 2.7

> Deadlock between topology update and CQ registration.
> -
>
> Key: IGNITE-13082
> URL: https://issues.apache.org/jira/browse/IGNITE-13082
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.7
>Reporter: Andrey Mashenkov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Relevant stack traces:Relevant stack traces:
>  
> {code:java}
> "sys-stripe-0-#65483%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85739 prio=5 os_prio=0 tid=0x7fda80139800 nid=0x5618 waiting on 
> condition [0x7fdc018e8000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfc138298> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
>  at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
>  at 
> java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.lockListenerReadLock(GridCacheMapEntry.java:5032)
>  at 
> org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2262)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2574)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2034)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1854)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1668)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3239)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:139)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
>  at 
> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
>  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:1626)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1246)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager.access$4300(GridIoManager.java:142)
>  at 
> org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1137)
>  at 
> org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:50)
>  at 
> org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
>  at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) at 
> java.lang.Thread.run(Thread.java:748) 
> {code}
>  
> {code:java}
> "disco-notifier-worker-#65517%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
>  #85777 prio=5 os_prio=0 tid=0x7fda800a9800 nid=0x5639 waiting on 
> condition [0x7fdc006d9000]   java.lang.Thread.State: WAITING (parking) at 
> sun.misc.Unsafe.park(Native Method) - parking to wait for  
> <0xfbde5f30> (a 
> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
> 

[jira] [Updated] (IGNITE-13082) Deadlock between topology update and CQ registration.

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-13082:
--
Description: 
Relevant stack traces:Relevant stack traces:

 
{code:java}
"sys-stripe-0-#65483%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
 #85739 prio=5 os_prio=0 tid=0x7fda80139800 nid=0x5618 waiting on condition 
[0x7fdc018e8000]   java.lang.Thread.State: WAITING (parking) at 
sun.misc.Unsafe.park(Native Method) - parking to wait for  <0xfc138298> 
(a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
 at 
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
 at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.lockListenerReadLock(GridCacheMapEntry.java:5032)
 at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2262)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2574)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2034)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1854)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1668)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3239)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:139)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
 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:1626)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1246)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.access$4300(GridIoManager.java:142)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1137)
 at 
org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:50)
 at 
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
 at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) 
at java.lang.Thread.run(Thread.java:748) 
{code}
 
{code:java}
"disco-notifier-worker-#65517%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
 #85777 prio=5 os_prio=0 tid=0x7fda800a9800 nid=0x5639 waiting on condition 
[0x7fdc006d9000]   java.lang.Thread.State: WAITING (parking) at 
sun.misc.Unsafe.park(Native Method) - parking to wait for  <0xfbde5f30> 
(a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
 at 
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopologyImpl.localUpdateCounters(GridDhtPartitionTopologyImpl.java:2810)
 at 

[jira] [Updated] (IGNITE-13082) Deadlock between topology update and CQ registration.

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-13082:
--
Description: 
Relevant stack traces:Relevant stack traces:

 
{code:java}
"sys-stripe-0-#65483%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
 #85739 prio=5 os_prio=0 tid=0x7fda80139800 nid=0x5618 waiting on condition 
[0x7fdc018e8000]   java.lang.Thread.State: WAITING (parking) at 
sun.misc.Unsafe.park(Native Method) - parking to wait for  <0xfc138298> 
(a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
 at 
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
 at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.lockListenerReadLock(GridCacheMapEntry.java:5032)
 at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2262)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2574)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2034)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1854)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1668)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3239)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:139)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
 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:1626)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1246)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.access$4300(GridIoManager.java:142)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1137)
 at 
org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:50)
 at 
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
 at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) 
at java.lang.Thread.run(Thread.java:748) 
{code}
 
{code:java}
"disco-notifier-worker-#65517%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
 #85777 prio=5 os_prio=0 tid=0x7fda800a9800 nid=0x5639 waiting on condition 
[0x7fdc006d9000]   java.lang.Thread.State: WAITING (parking) at 
sun.misc.Unsafe.park(Native Method) - parking to wait for  <0xfbde5f30> 
(a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
 at 
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionTopologyImpl.localUpdateCounters(GridDhtPartitionTopologyImpl.java:2810)
 at 

[jira] [Comment Edited] (IGNITE-12823) .NET: Service method with user type array parameter can't be found

2020-05-27 Thread Alexey Kukushkin (Jira)


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

Alexey Kukushkin edited comment on IGNITE-12823 at 5/27/20, 12:13 PM:
--

[~ptupitsyn], the fix looks almost OK, just need to take care about "keep 
binary" mode for both the Java and .NET services. I added comments in the pull 
request.


was (Author: kukushal):
[~ptupitsyn], the fix looks almost OK, just need to take care about "keep 
binary" mode for both the Java and .NET services.

> .NET: Service method with user type array parameter can't be found
> --
>
> Key: IGNITE-12823
> URL: https://issues.apache.org/jira/browse/IGNITE-12823
> Project: Ignite
>  Issue Type: Bug
>  Components: platforms
>Reporter: Alexey Kukushkin
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET, sbcf
> Attachments: ignite-12823-vs-2.8.patch
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> *+Setup+*
>  * Ignite Java service with a method having an array of user types as a 
> parameters, for example, caclulate(Parameter[] params)
> *+Actions+*
>  * .NET client calls the Ignite Java service, for example, 
> ignite.GetServices().GetServiceProxy().calculate(new[] \{new 
> Parameter()});
> *+Expected+*
>  * The service method is called
> *+Actual+*
>  * Exception "Could not find proxy method 'calculate' in class ICalculator"
> *+Workaround+*
>  * Replace array of user types with array of objects in the service methods 
> signatures, for example, caclulate(Object[] params)



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


[jira] [Commented] (IGNITE-12823) .NET: Service method with user type array parameter can't be found

2020-05-27 Thread Alexey Kukushkin (Jira)


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

Alexey Kukushkin commented on IGNITE-12823:
---

[~ptupitsyn], the fix look almost OK, just need to take case about "keep 
binary" mode for both the Java and .NET services.

> .NET: Service method with user type array parameter can't be found
> --
>
> Key: IGNITE-12823
> URL: https://issues.apache.org/jira/browse/IGNITE-12823
> Project: Ignite
>  Issue Type: Bug
>  Components: platforms
>Reporter: Alexey Kukushkin
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET, sbcf
> Attachments: ignite-12823-vs-2.8.patch
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> *+Setup+*
>  * Ignite Java service with a method having an array of user types as a 
> parameters, for example, caclulate(Parameter[] params)
> *+Actions+*
>  * .NET client calls the Ignite Java service, for example, 
> ignite.GetServices().GetServiceProxy().calculate(new[] \{new 
> Parameter()});
> *+Expected+*
>  * The service method is called
> *+Actual+*
>  * Exception "Could not find proxy method 'calculate' in class ICalculator"
> *+Workaround+*
>  * Replace array of user types with array of objects in the service methods 
> signatures, for example, caclulate(Object[] params)



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


[jira] [Created] (IGNITE-13082) Deadlock between topology update and CQ registration.

2020-05-27 Thread Andrey Mashenkov (Jira)
Andrey Mashenkov created IGNITE-13082:
-

 Summary: Deadlock between topology update and CQ registration.
 Key: IGNITE-13082
 URL: https://issues.apache.org/jira/browse/IGNITE-13082
 Project: Ignite
  Issue Type: Task
Reporter: Andrey Mashenkov


Relevant stack traces:Relevant stack traces:
{code}"sys-stripe-0-#65483%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
 #85739 prio=5 os_prio=0 tid=0x7fda80139800 nid=0x5618 waiting on condition 
[0x7fdc018e8000]   java.lang.Thread.State: WAITING (parking) at 
sun.misc.Unsafe.park(Native Method) - parking to wait for  <0xfc138298> 
(a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
 at 
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
 at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.lockListenerReadLock(GridCacheMapEntry.java:5032)
 at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2262)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2574)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:2034)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0(GridDhtAtomicCache.java:1854)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal(GridDhtAtomicCache.java:1668)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest(GridDhtAtomicCache.java:3239)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:139)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:273)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:268)
 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:1626)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1246)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.access$4300(GridIoManager.java:142)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager$8.execute(GridIoManager.java:1137)
 at 
org.apache.ignite.internal.managers.communication.TraceRunnable.run(TraceRunnable.java:50)
 at 
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
 at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119) 
at java.lang.Thread.run(Thread.java:748)\{code}
{code}"disco-notifier-worker-#65517%cache.BinaryMetadataRegistrationInsideEntryProcessorTest0%"
 #85777 prio=5 os_prio=0 tid=0x7fda800a9800 nid=0x5639 waiting on condition 
[0x7fdc006d9000]   java.lang.Thread.State: WAITING (parking) at 
sun.misc.Unsafe.park(Native Method) - parking to wait for  <0xfbde5f30> 
(a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at 
java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967)
 at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283)
 at 
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727)
 at 

[jira] [Comment Edited] (IGNITE-12823) .NET: Service method with user type array parameter can't be found

2020-05-27 Thread Alexey Kukushkin (Jira)


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

Alexey Kukushkin edited comment on IGNITE-12823 at 5/27/20, 12:12 PM:
--

[~ptupitsyn], the fix looks almost OK, just need to take care about "keep 
binary" mode for both the Java and .NET services.


was (Author: kukushal):
[~ptupitsyn], the fix look almost OK, just need to take case about "keep 
binary" mode for both the Java and .NET services.

> .NET: Service method with user type array parameter can't be found
> --
>
> Key: IGNITE-12823
> URL: https://issues.apache.org/jira/browse/IGNITE-12823
> Project: Ignite
>  Issue Type: Bug
>  Components: platforms
>Reporter: Alexey Kukushkin
>Assignee: Pavel Tupitsyn
>Priority: Major
>  Labels: .NET, sbcf
> Attachments: ignite-12823-vs-2.8.patch
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> *+Setup+*
>  * Ignite Java service with a method having an array of user types as a 
> parameters, for example, caclulate(Parameter[] params)
> *+Actions+*
>  * .NET client calls the Ignite Java service, for example, 
> ignite.GetServices().GetServiceProxy().calculate(new[] \{new 
> Parameter()});
> *+Expected+*
>  * The service method is called
> *+Actual+*
>  * Exception "Could not find proxy method 'calculate' in class ICalculator"
> *+Workaround+*
>  * Replace array of user types with array of objects in the service methods 
> signatures, for example, caclulate(Object[] params)



--
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-05-27 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev commented on IGNITE-12911:
--

However, we may now disallow putting keys (or values) into cache which have 
non-zero offset. This will work while we are working on proper fixes. Are you 
interested in preparing such fix?

> 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
>Assignee: Anton Kalashnikov
>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
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:2016)
> at 
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:401)
> at 
> 

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

2020-05-27 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev commented on IGNITE-12911:
--

[~akalashnikov] I think we should fix IGNITE-13080 first then merge this fix. I 
don't think we should merge code that has known issues.

> 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
>Assignee: Anton Kalashnikov
>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
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:2016)
> at 
> org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager.store(GridCacheQueryManager.java:401)
> at 
> 

[jira] [Updated] (IGNITE-13081) RestProcessor can hang during shutdown on start if discovery SPI failed

2020-05-27 Thread Semyon Danilov (Jira)


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

Semyon Danilov updated IGNITE-13081:

Description: If rest processor receives CACHE_GET or CACHE_PUT operations 
during node startup and node failed to startup properly (for example, because 
Discovery SPI failed), node will hang forever on shutdown waiting for grid rest 
workers to finish GET/PUT operations

> RestProcessor can hang during shutdown on start if discovery SPI failed
> ---
>
> Key: IGNITE-13081
> URL: https://issues.apache.org/jira/browse/IGNITE-13081
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.7.6
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>
> If rest processor receives CACHE_GET or CACHE_PUT operations during node 
> startup and node failed to startup properly (for example, because Discovery 
> SPI failed), node will hang forever on shutdown waiting for grid rest workers 
> to finish GET/PUT operations



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


[jira] [Updated] (IGNITE-13081) RestProcessor can hang during shutdown on start if discovery SPI failed

2020-05-27 Thread Semyon Danilov (Jira)


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

Semyon Danilov updated IGNITE-13081:

Affects Version/s: 2.7.6

> RestProcessor can hang during shutdown on start if discovery SPI failed
> ---
>
> Key: IGNITE-13081
> URL: https://issues.apache.org/jira/browse/IGNITE-13081
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.7.6
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>




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


[jira] [Created] (IGNITE-13081) RestProcessor can hang during shutdown on start if discovery SPI failed

2020-05-27 Thread Semyon Danilov (Jira)
Semyon Danilov created IGNITE-13081:
---

 Summary: RestProcessor can hang during shutdown on start if 
discovery SPI failed
 Key: IGNITE-13081
 URL: https://issues.apache.org/jira/browse/IGNITE-13081
 Project: Ignite
  Issue Type: Bug
Reporter: Semyon Danilov
Assignee: Semyon Danilov






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


[jira] [Updated] (IGNITE-13014) Remove double checking of node availability.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Attachment: WorstCase_log.log

> Remove double checking of node availability. 
> -
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WorstCase_log.log, WostCase.txt
>
>
> Proposal:
> Do not check failed node second time. Double node checking prolongs node 
> failure detection and gives no additional benefits. There are mesh and 
> hardcoded values in this routine.
> For the present, we have double checking of node availability. Let's imagine 
> node 2 doesn't answer any more. Node 1 becomes unable to ping node 2 and asks 
> Node 3 to establish permanent connection instead of node 2. Node 3 may try to 
> check node 2 too. Or may not.
> Possible long detection of node failure up to ServerImpl.CON_CHECK_INTERVAL + 
> 2 * IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Attachment: WostCase.txt

> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WorstCase_log.log, WostCase.txt
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We should fix several drawbacks in the backward checking of failed node. They 
> prolongs node failure detection upto: ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’.
> Suggestions:
> 1) We should replace hardcoded timeout 100ms with a parameter like 
> failureDetectionTimeout:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100); // Make it not a constant.
>...
> }
> {code}
> 2) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false; // Make any error mean lost connection.
>}
>return false;
> }
> {code}
> 3) Maximal interval to check previous node should rely on actual failure 
> detection timeout:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; // Here should be a 
> timeout of failure detection.
>if (ok) {
>   // Check case when previous node suddenly died. This will speed up
>   // node failing.
>   ...
> }
> res.previousNodeAlive(ok);
> {code}
> 4) Remove hardcoded sleep of 200ms when marking previous node alive:
> {code:java}
> ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive(){
>...
>try {
>   Thread.sleep(200);
>}
>catch (InterruptedException e) {
>   Thread.currentThread().interrupt();
>}
>...
> }
> {code}



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Attachment: WorstCase_log.log

> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WorstCase_log.log, WostCase.txt
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We should fix several drawbacks in the backward checking of failed node. They 
> prolongs node failure detection upto: ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’.
> Suggestions:
> 1) We should replace hardcoded timeout 100ms with a parameter like 
> failureDetectionTimeout:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100); // Make it not a constant.
>...
> }
> {code}
> 2) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false; // Make any error mean lost connection.
>}
>return false;
> }
> {code}
> 3) Maximal interval to check previous node should rely on actual failure 
> detection timeout:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; // Here should be a 
> timeout of failure detection.
>if (ok) {
>   // Check case when previous node suddenly died. This will speed up
>   // node failing.
>   ...
> }
> res.previousNodeAlive(ok);
> {code}
> 4) Remove hardcoded sleep of 200ms when marking previous node alive:
> {code:java}
> ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive(){
>...
>try {
>   Thread.sleep(200);
>}
>catch (InterruptedException e) {
>   Thread.currentThread().interrupt();
>}
>...
> }
> {code}



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
We should fix several drawbacks in the backward checking of failed node. They 
prolongs node failure detection upto: ServerImpl.CON_CHECK_INTERVAL + 2 * 
IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’.

Suggestions:

1) We should replace hardcoded timeout 100ms with a parameter like 
failureDetectionTimeout:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100); // Make it not a constant.
   ...
}
{code}


2) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false; // Make any error mean lost connection.
   }

   return false;
}
{code}


3) Maximal interval to check previous node should rely on actual failure 
detection timeout:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; // Here should be a 
timeout of failure detection.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}


4) Remove hardcoded sleep of 200ms when marking previous node alive:
{code:java}
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive(){
   ...

   try {
  Thread.sleep(200);
   }
   catch (InterruptedException e) {
  Thread.currentThread().interrupt();
   }

   ...
}
{code}


  was:
We should fix 3 drawbacks in the backward checking of failed node:

1) We should replace hardcoded timeout 100ms with a parameter like 
failureDetectionTimeout:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}


2) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}


3) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param like failureDetectionTimeout:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout?

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}


4) Remove hardcoded thread sleep of 200ms when marking previous node alive:
{code:java}
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive(){
...
   try {
  Thread.sleep(200);
   }
   catch (InterruptedException e) {
  Thread.currentThread().interrupt();
   }
}
{code}



> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We should fix several drawbacks in the backward checking of failed node. They 
> prolongs node failure detection upto: ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’.
> Suggestions:
> 1) We should replace hardcoded timeout 100ms with a parameter like 
> failureDetectionTimeout:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100); // Make it not a constant.
>...
> }
> {code}
> 2) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress 

[jira] [Updated] (IGNITE-13068) SQL: use cache.localSize instead of index scan to calculate row count statistic

2020-05-27 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-13068:
--
Ignite Flags: Release Notes Required  (was: Docs Required,Release Notes 
Required)

> SQL: use cache.localSize instead of index scan to calculate row count 
> statistic 
> 
>
> Key: IGNITE-13068
> URL: https://issues.apache.org/jira/browse/IGNITE-13068
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Taras Ledkov
>Assignee: Taras Ledkov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> The scan of index is slow on big data set on setup where disc i/o requires 
> warm up.
> This is the reason that restarting the node can take a long time.



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


[jira] [Updated] (IGNITE-13014) Remove double checking of node availability.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Description: 
Proposal:
Do not check failed node second time. Double node checking prolongs node 
failure detection and gives no additional benefits. There are mesh and 
hardcoded values in this routine.

For the present, we have double checking of node availability. Let's imagine 
node 2 doesn't answer any more. Node 1 becomes unable to ping node 2 and asks 
Node 3 to establish permanent connection instead of node 2. Node 3 may try to 
check node 2 too. Or may not.

Possible long detection of node failure up to ServerImpl.CON_CHECK_INTERVAL + 2 
* IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’



  was:
For the present, we have double checking of node availability. This prolongs 
node failure detection and gives no additional benefits. There are mesh and 
hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Node 3 may try to check node 2 too. Or may not.

Proposal:
Do not check failed node second time. Keep failure detection within expected 
timeouts (IgniteConfiguration.failureDetectionTimeout).


Drawbacks:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
{code:java}
// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
{code}

If ‘ok == true’ node 3 checks node 2.

3)  Several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():
{code:java}
sock.connect(addr, 100);
{code}

Node 1 marks Node 2 alive anew with hardcoded 200ms. See 
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive():
{code:java}
try {
   Thread.sleep(200);
}
catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
{code}

4) Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused():

{code:java}
try (Socket sock = new Socket()) {
   sock.connect(addr, 100);
}
catch (ConnectException e) {
   return true;
}
catch (IOException e) {
   return false; //Consideres as OK.
}
{code}


Summary: Remove double checking of node availability.   (was: Remove 
double checking of node availability. Fix hardcoded values.)

> Remove double checking of node availability. 
> -
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WostCase.txt
>
>
> Proposal:
> Do not check failed node second time. Double node checking prolongs node 
> failure detection and gives no additional benefits. There are mesh and 
> hardcoded values in this routine.
> For the present, we have double checking of node availability. Let's imagine 
> node 2 doesn't answer any more. Node 1 becomes unable to ping node 2 and asks 
> Node 3 to establish permanent connection instead of node 2. Node 3 may try to 
> check node 2 too. Or may not.
> Possible long detection of node failure up to ServerImpl.CON_CHECK_INTERVAL + 
> 2 * IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
We should fix 3 drawbacks in the backward checking of failed node:

1) We should replace hardcoded timeout 100ms with a parameter like 
failureDetectionTimeout:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}


2) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}


3) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param like failureDetectionTimeout:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout?

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}


4) Remove hardcoded thread sleep of 200ms when marking previous node alive:
{code:java}
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive(){
...
   try {
  Thread.sleep(200);
   }
   catch (InterruptedException e) {
  Thread.currentThread().interrupt();
   }
}
{code}


  was:
We should fix 3 drawbacks in the backward checking of failed node:

1) We should replace hardcoded timeout 100ms with a parameter like 
failureDetectionTimeout:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}


2) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}


3) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param like failureDetectionTimeout:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout?

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}



> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We should fix 3 drawbacks in the backward checking of failed node:
> 1) We should replace hardcoded timeout 100ms with a parameter like 
> failureDetectionTimeout:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100);
>...
> }
> {code}
> 2) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false;//Why a timeout doesn't mean lost connection?
>}
>return false;
> }
> {code}
> 3) Maximal interval to check previous node should be reconsidered. It should 
> rely on configurable param like failureDetectionTimeout:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
> CON_CHECK_INTERVAL', not a 

[jira] [Resolved] (IGNITE-13018) Get rid of duplicated checking of failed node.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin resolved IGNITE-13018.
---
Resolution: Duplicate

Duplicates IGNITE-13014.

> Get rid of duplicated checking of failed node.
> --
>
> Key: IGNITE-13018
> URL: https://issues.apache.org/jira/browse/IGNITE-13018
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> Failed node checking should be simplified to one step: ping node (send a 
> message) from previous one in the ring and wait for response within 
> IgniteConfiguration.failureDetectionTimeout. If node doesn't respond, we 
> should consider it failed. Extra steps of connection checking may seriously 
> delay failure detection, bring confusion and weird behavior.



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


[jira] [Updated] (IGNITE-13012) Make node connection checking rely on the configuration. Simplify node ping routine.

2020-05-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13012:
--
Description: 
Node-to-next-node connection checking has several drawbacks which go together. 
We should fix the following :

1) Make connection check interval half of actual failure detection timeout. 
Current value is a constant:
{code:java}static int ServerImpls.CON_CHECK_INTERVAL = 500{code}

2) Make connection check interval rely on common time of any last sent message. 
Current ping is bound to own time:
{code:java}ServerImpl. RingMessageWorker.lastTimeConnCheckMsgSent{code}
This is weird because any discovery message check connection. And 
TpcDiscoveryConnectionCheckMessage is just an addition when message queue is 
empty for a long time.

3) Remove additional, randomly appearing and quickened connection checking.  
Once we do #1, this will become even more useless.
Despite TCP discovery has a period of connection checking (see #1), it may send 
ping before this period exhausts. This premature node ping relies on the time 
of any sent or even received message. Imagine: if node 2 receives no message 
from node 1 within some time, it decides to do extra ping node 3 not waiting 
for regular ping. Such behavior makes confusion and gives no benefits. 
See {code:java}ServerImpl.RingMessageWorker.failureThresholdReached{code}

4) Do not worry user with “Node disconnected” when everything is OK. Once we do 
#1, this will become even more useless. Fixing #3 also fixes this issue.
If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected at all. 
User can see this unexpected and worrying message if he typed 
IgniteConfiguration.failureDetectionTimeout < 500ms.

  was:
Node-to-next-node connection checking has several drawbacks which go together. 
We should fix the following :

1) First thing firts, make connection check interval predictable and dependable 
on the failureDetectionTimeout or similar params. Current value is a constant:
{code:java}static int ServerImpls.CON_CHECK_INTERVAL = 500{code}

2) Make connection check interval rely on common time of any last sent message. 
Current ping is bound to own time:
{code:java}ServerImpl. RingMessageWorker.lastTimeConnCheckMsgSent{code}
This is weird because any discovery message does actually check connection. And 
TpDiscoveryConnectionCheckMessage is just an addition when message queue is 
empty for a long time.

3) Remove additional, randomly appearing quickened connection checking.  Once 
we do #1, this will become even more useless.
Despite we have a period of connection checking (see #1), we can also send ping 
before the period exhausts. This premature node ping relies on the time of any 
sent or even received message. Imagine: if node 2 receives no message from node 
1 within some time, it decides to do extra ping node 3 not waiting for regular 
ping. This happens quite randomly. Such behavior makes confusion and gives no 
benefits. 

4) Do not worry user with “Node disconnected” when everything is OK. Once we do 
#1, this will become even more useless.
If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected at all. 
User can see this unexpected and worrying message if he typed 
failureDetectionTimeout < 500ms.


> Make node connection checking rely on the configuration. Simplify node ping 
> routine.
> 
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Node-to-next-node connection checking has several drawbacks which go 
> together. We should fix the following :
> 1) Make connection check interval half of actual failure detection timeout. 
> Current value is a constant:
> {code:java}static int ServerImpls.CON_CHECK_INTERVAL = 500{code}
> 2) Make connection check interval rely on common time of any last sent 
> message. Current ping is bound to own time:
> {code:java}ServerImpl. RingMessageWorker.lastTimeConnCheckMsgSent{code}
> This is weird because any discovery message check connection. And 
> TpcDiscoveryConnectionCheckMessage is just an addition when message queue is 
> empty for a long time.
> 3) Remove additional, randomly appearing and quickened connection checking.  
> Once we do #1, this will become even more useless.
> Despite TCP discovery has a period of connection checking (see #1), it may 
> send ping before this period exhausts. This premature node ping relies on 

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

2020-05-27 Thread Anton Kalashnikov (Jira)


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

Anton Kalashnikov commented on IGNITE-12911:


[~ilyak] thanks for your test. In fact, it showed us a  big problem which I 
described with details right here - 
https://issues.apache.org/jira/browse/IGNITE-13080.
But as you can see it is different problems. So I suggest to ignore your test 
with the link of new ticket and merge my changes as is.

> 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
>Assignee: Anton Kalashnikov
>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
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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 
> org.apache.ignite.internal.processors.query.GridQueryProcessor.store(GridQueryProcessor.java:2016)
> at 
> 

[jira] [Updated] (IGNITE-13080) Incorrect hash calculation for binaryObject in case of deduplication

2020-05-27 Thread Anton Kalashnikov (Jira)


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

Anton Kalashnikov updated IGNITE-13080:
---
Description: 
Lets suppose we have two follows classes(Implimentation of SubKey doesn't 
matter here):
{noformat}
public static class Key {   
private SubKey subKey;
}

public static class Value {
private SubKey subKey;
private Key key;
}
{noformat}
If subKey would be same in Key and Value, and we try to do follows things:
{noformat}
SubKey subKey = new SubKey();
Key key = new Key(subKey);
Value value = new Value(subKey, key);

cache.put(key, value); 

assert cache.size() == 1; //true

BinaryObject keyAsBinaryObject = cache.get(key).field("key");

cache.put(keyAsBinaryObject, value); // cache.size shuld be 1 but it would be 2

assert cache.size() == 1; //false because right now we have to different key 
which is wrong
{noformat}
We get two different record instead of one.

Reason:
When we put raw class Key to cache ignite convert it to binary object(literally 
to a byte array), and then calculate the hash over this byte array and store it 
to this object.

When we put the raw class Value, the same thing happens, but since we have two 
references to the same object (subKey) inside Value, deduplication occurs. This 
means that the first time we meet an object, we save it as it is and remember 
its location, and then if we meet the same object again instead of saving all 
their bytes as is, we mark this place as HANDLE and record only the offset at 
which we can find the saved object.
After that, we try to receive some object(Key) from BinaryObject of Value as a 
result we don't have a new BinaryObject with a new byte array but instead, we 
have BinaryObject with same byte array and with offset which shows us where we 
can find the requested value(Key). And when we try to store this object to 
cache, ignite does it incorrectly - first of all, byte array contains HANDLE 
mark with offset instead of real bytes of the inner object what is already 
wrong but more than it we also calculate hash incorrectly.

Problem:
Right now, Ignite isn't able to store BinaryObject with contains HANDLE. And as 
I understand, it's not so easy to fix. Maybe it makes sense just explicitly 
forbid to work with BinaryObject such described above but of course, it is 
discussable.

Workaround:
we can change the order of field in Value, like this:
{noformat}
public static class Value {   
private Key key;
private SubKey subKey;
}
{noformat}
After that subKey would be inlined inside of key and subKey inside of Value 
would be represented as HANDLE.

Also we can rebuild the object such that:
{noformat}
keyAsBinaryObject.toBuilder().build();
{noformat}
During the this procedure all HANDLE would be restored to real objects.

Test which represents this case - 
org.apache.ignite.internal.processors.cache.IgniteCachePutKeyAttachedBinaryObjectTest#testKeyRefersToSubkeyInValue(After
 https://issues.apache.org/jira/browse/IGNITE-12911 would be resolved).


  was:
Lets suppose we have two follows classes(Implimentation of SubKey doesn't 
matter here):
{noformat}
public static class Key {   
private SubKey subKey;
}

public static class Value {
private SubKey subKey;
private Key key;
}
{noformat}
If subKey would be same in Key and Value, and we try to do follows things:
{noformat}
SubKey subKey = new SubKey();
Key key = new Key(subKey);
Value value = new Value(subKey, key);

cache.put(key, value); 

assert cache.size() == 1; //true

BinaryObject keyAsBinaryObject = cache.get(key).field("key");

cache.put(keyAsBinaryObject, value); // cache.size shuld be 1 but it would be 2

assert cache.size() == 1; //false because right now we have to different key 
which is wrong
{noformat}
We get two different record instead of one.

Reason:
When we put raw class Key to cache ignite convert it to binary object(literally 
to a byte array), and then calculate the hash over this byte array and store it 
to this object.

When we put the raw class Value, the same thing happens, but since we have two 
references to the same object (subKey) inside Value, deduplication occurs. This 
means that the first time we meet an object, we save it as it is and remember 
its location, and then if we meet the same object again instead of saving all 
their bytes as is, we mark this place as HANDLE and record only the offset at 
which we can find the saved object.
After that, we try to receive some object(Key) from BinaryObject of Value as a 
result we don't have a new BinaryObject with a new byte array but instead, we 
have BinaryObject with same byte array and with offset which shows us where we 
can find the requested value(Key). And when we try to store this object to 
cache, ignite does it incorrectly - first of all, byte array contains HANDLE 
mark with offset instead of real bytes of the inner 

[jira] [Created] (IGNITE-13080) Incorrect hash calculation for binaryObject in case of deduplication

2020-05-27 Thread Anton Kalashnikov (Jira)
Anton Kalashnikov created IGNITE-13080:
--

 Summary: Incorrect hash calculation for binaryObject in case of 
deduplication
 Key: IGNITE-13080
 URL: https://issues.apache.org/jira/browse/IGNITE-13080
 Project: Ignite
  Issue Type: Bug
  Components: binary
Reporter: Anton Kalashnikov


Lets suppose we have two follows classes(Implimentation of SubKey doesn't 
matter here):
{noformat}
public static class Key {   
private SubKey subKey;
}

public static class Value {
private SubKey subKey;
private Key key;
}
{noformat}
If subKey would be same in Key and Value, and we try to do follows things:
{noformat}
SubKey subKey = new SubKey();
Key key = new Key(subKey);
Value value = new Value(subKey, key);

cache.put(key, value); 

assert cache.size() == 1; //true

BinaryObject keyAsBinaryObject = cache.get(key).field("key");

cache.put(keyAsBinaryObject, value); // cache.size shuld be 1 but it would be 2

assert cache.size() == 1; //false because right now we have to different key 
which is wrong
{noformat}
We get two different record instead of one.

Reason:
When we put raw class Key to cache ignite convert it to binary object(literally 
to a byte array), and then calculate the hash over this byte array and store it 
to this object.

When we put the raw class Value, the same thing happens, but since we have two 
references to the same object (subKey) inside Value, deduplication occurs. This 
means that the first time we meet an object, we save it as it is and remember 
its location, and then if we meet the same object again instead of saving all 
their bytes as is, we mark this place as HANDLE and record only the offset at 
which we can find the saved object.
After that, we try to receive some object(Key) from BinaryObject of Value as a 
result we don't have a new BinaryObject with a new byte array but instead, we 
have BinaryObject with same byte array and with offset which shows us where we 
can find the requested value(Key). And when we try to store this object to 
cache, ignite does it incorrectly - first of all, byte array contains HANDLE 
mark with offset instead of real bytes of the inner object what is already 
wrong but more than it we also calculate hash incorrectly.

Problem:
Right now, Ignite isn't able to store BinaryObject with contains HANDLE. And as 
I understand, it's not so easy to fix. Maybe it makes sense just explicitly 
forbid to work with BinaryObject such described above but of course, it is 
discussable.

Workaround:
we can change the order of field in Value, like this:
{noformat}
public static class Value {   
private Key key;
private SubKey subKey;
}
{noformat}
After that subKey would be inlined inside of key and subKey inside of Value 
would be represented as HANDLE.

Also we can rebuild the object such that:
{noformat}
keyAsBinaryObject.toBuilder().build();
{noformat}
During the this procedure all HANDLE would be restored to real objects.




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


[jira] [Commented] (IGNITE-12978) Cancel snapshot command

2020-05-27 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-12978:


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

> Cancel snapshot command
> ---
>
> Key: IGNITE-12978
> URL: https://issues.apache.org/jira/browse/IGNITE-12978
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
>  Labels: iep-43
> Fix For: 2.9
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> Add the ability to cancel snapshot operation through JMX and command line.



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


[jira] [Commented] (IGNITE-13051) Optimized affinity switch on baseline node left is broken for client topology and MVCC

2020-05-27 Thread Maksim Timonin (Jira)


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

Maksim Timonin commented on IGNITE-13051:
-

Discussed with [~gvvinblade], additional checks are required. 

> Optimized affinity switch on baseline node left is broken for client topology 
> and MVCC
> --
>
> Key: IGNITE-13051
> URL: https://issues.apache.org/jira/browse/IGNITE-13051
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Maksim Timonin
>Priority: Critical
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> If a node contains only client cache topology with MVCC enabled, PME will 
> hang after changes introduced in IGNITE-12617.
> Reproduced by 
> CachePartitionLossWithRestartsTest.testPartitionLossDetectionOnClientTopology[0
>  false false -1] and enabled MVCC.



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


[jira] [Commented] (IGNITE-13068) SQL: use cache.localSize instead of index scan to calculate row count statistic

2020-05-27 Thread Roman Kondakov (Jira)


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

Roman Kondakov commented on IGNITE-13068:
-

[~tledkov-gridgain] patch looks good to me.

> SQL: use cache.localSize instead of index scan to calculate row count 
> statistic 
> 
>
> Key: IGNITE-13068
> URL: https://issues.apache.org/jira/browse/IGNITE-13068
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Taras Ledkov
>Assignee: Taras Ledkov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> The scan of index is slow on big data set on setup where disc i/o requires 
> warm up.
> This is the reason that restarting the node can take a long time.



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


[jira] [Comment Edited] (IGNITE-13051) Optimized affinity switch on baseline node left is broken for client topology and MVCC

2020-05-27 Thread Maksim Timonin (Jira)


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

Maksim Timonin edited comment on IGNITE-13051 at 5/27/20, 8:26 AM:
---

[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in CachesRegistry [2] without applying 
AttributeNodeFilter;
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## the cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## the cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while cache registration process?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]


was (Author: timonin.maksim):
[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in CachesRegistry [2];
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## the cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## the cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while cache registration process?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]

> Optimized affinity switch on baseline node left is broken for client topology 
> and MVCC
> --
>
> Key: IGNITE-13051
> URL: https://issues.apache.org/jira/browse/IGNITE-13051
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>

[jira] [Comment Edited] (IGNITE-13051) Optimized affinity switch on baseline node left is broken for client topology and MVCC

2020-05-27 Thread Maksim Timonin (Jira)


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

Maksim Timonin edited comment on IGNITE-13051 at 5/27/20, 8:24 AM:
---

[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in CachesRegistry [2];
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## the cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## the cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while cache registration process?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]


was (Author: timonin.maksim):
[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in CachesRegistry [2];
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## the cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## the cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while registration?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]

> Optimized affinity switch on baseline node left is broken for client topology 
> and MVCC
> --
>
> Key: IGNITE-13051
> URL: https://issues.apache.org/jira/browse/IGNITE-13051
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Maksim Timonin
>Priority: 

[jira] [Comment Edited] (IGNITE-13051) Optimized affinity switch on baseline node left is broken for client topology and MVCC

2020-05-27 Thread Maksim Timonin (Jira)


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

Maksim Timonin edited comment on IGNITE-13051 at 5/27/20, 8:22 AM:
---

[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in CachesRegistry [2];
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while registration?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]


was (Author: timonin.maksim):
[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in **CachesRegistry [2];
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while registration?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]

> Optimized affinity switch on baseline node left is broken for client topology 
> and MVCC
> --
>
> Key: IGNITE-13051
> URL: https://issues.apache.org/jira/browse/IGNITE-13051
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Maksim Timonin
>Priority: Critical
> Fix For: 

[jira] [Comment Edited] (IGNITE-13051) Optimized affinity switch on baseline node left is broken for client topology and MVCC

2020-05-27 Thread Maksim Timonin (Jira)


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

Maksim Timonin edited comment on IGNITE-13051 at 5/27/20, 8:22 AM:
---

[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in CachesRegistry [2];
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## the cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## the cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while registration?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]


was (Author: timonin.maksim):
[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in CachesRegistry [2];
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while registration?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]

> Optimized affinity switch on baseline node left is broken for client topology 
> and MVCC
> --
>
> Key: IGNITE-13051
> URL: https://issues.apache.org/jira/browse/IGNITE-13051
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Maksim Timonin
>Priority: Critical
> Fix 

[jira] [Commented] (IGNITE-13051) Optimized affinity switch on baseline node left is broken for client topology and MVCC

2020-05-27 Thread Maksim Timonin (Jira)


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

Maksim Timonin commented on IGNITE-13051:
-

[~ascherbakov] ok, thanks for the clarification.

[~gvvinblade] hi! could you please check my fix suggestion in PR [GitHub Pull 
Request #7852|https://github.com/apache/ignite/pull/7852]. Is it a right place 
to fix? My logic is:
 # By documentation [1] mvccEnabled is true whether at least one cache with 
mvcc *registered*;
 # Caches are *registered* in **CachesRegistry [2];
 # MVCC flag set to true for new caches in next cases:
 ## preProcessCacheConfiguration: while dynamic starting cache;
 ## preProcessCacheConfiguration: adding cache from configuration;
 ## starting cache after triggering GlobalState to active.
 # This bug describes a case:
 ## the cache is started on other nodes in MVCC mode;
 ## cache would not be started on the node0 as it filtered by 
AttributeNodeFilter;
 ## cache is not added to configuration for the node0 IgniteConfiguration;
 ## so it leads that cache is registered on the node0, but not started and the 
MVCC flag is not set. It leads to inconsistency of cache mode on different 
nodes.

So I found a place to handle those nodes ([PR 
fix|https://github.com/apache/ignite/pull/7852]), it already contains a handle 
_initQueryStructuresForNotStartedCache._ So it looks like a right place to add 
the MVCC handle there. But there are some questions:
 # Is it valid to use _validateCacheConfiguration_ because by docs [3] it 
validates caches before *start* but the cache won't be started?
 # If MVCC enabled for registered caches, maybe it's better to check the MVCC 
configuration while registration?

 

[1] 
[MvccProcessorImpl#L216|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java#L216]

[2] 
[CachesRegistry.java#L52|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CachesRegistry.java#L52]

[3] 
[MvccProcessor.java#L211|https://github.com/apache/ignite/blob/ignite-2.8.1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessor.java#L211]

> Optimized affinity switch on baseline node left is broken for client topology 
> and MVCC
> --
>
> Key: IGNITE-13051
> URL: https://issues.apache.org/jira/browse/IGNITE-13051
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Scherbakov
>Assignee: Maksim Timonin
>Priority: Critical
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> If a node contains only client cache topology with MVCC enabled, PME will 
> hang after changes introduced in IGNITE-12617.
> Reproduced by 
> CachePartitionLossWithRestartsTest.testPartitionLossDetectionOnClientTopology[0
>  false false -1] and enabled MVCC.



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


[jira] [Commented] (IGNITE-13068) SQL: use cache.localSize instead of index scan to calculate row count statistic

2020-05-27 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-13068:


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

> SQL: use cache.localSize instead of index scan to calculate row count 
> statistic 
> 
>
> Key: IGNITE-13068
> URL: https://issues.apache.org/jira/browse/IGNITE-13068
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Taras Ledkov
>Assignee: Taras Ledkov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> The scan of index is slow on big data set on setup where disc i/o requires 
> warm up.
> This is the reason that restarting the node can take a long time.



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


[jira] [Commented] (IGNITE-13032) Fix flacky OptimizedMarshallerPooledSelfTest.

2020-05-27 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov commented on IGNITE-13032:
---

[~amashenkov], LGTM

> Fix flacky OptimizedMarshallerPooledSelfTest.
> -
>
> Key: IGNITE-13032
> URL: https://issues.apache.org/jira/browse/IGNITE-13032
> Project: Ignite
>  Issue Type: Bug
>  Components: binary
>Affects Versions: 2.7
>Reporter: Andrey Mashenkov
>Assignee: Andrey Mashenkov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> There are two flaky tests in the test case: 
> {{OptimizedMarshallerPooledSelfTest#testEvents}} and 
> {{OptimizedMarshallerPooledSelfTest#testServices}}. The tests timeout, the 
> reason is the following assertion:
> {noformat}
> [00:39:14]W:   [org.gridgain:ignite-core] java.lang.AssertionError
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedObjectStreamRegistry.closeOut(OptimizedObjectStreamRegistry.java:120)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller.marshal0(OptimizedMarshaller.java:209)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.marshal(AbstractNodeNameAwareMarshaller.java:56)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:10658)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:10722)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessage.partitionSizes(GridDhtPartitionsFullMessage.java:360)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.createPartitionsFullMessage(GridCachePartitionExchangeManager.java:1543)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.createPartitionsFullMessage(GridCachePartitionExchangeManager.java:1442)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.createPartitionsMessage(GridDhtPartitionsExchangeFuture.java:2116){noformat}
> Looks like the assertion fails because we attempt to return a stream to the 
> pool which does not belong to it.



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


[jira] [Commented] (IGNITE-13032) Fix flacky OptimizedMarshallerPooledSelfTest.

2020-05-27 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich commented on IGNITE-13032:


[~amashenkov], LGTM

> Fix flacky OptimizedMarshallerPooledSelfTest.
> -
>
> Key: IGNITE-13032
> URL: https://issues.apache.org/jira/browse/IGNITE-13032
> Project: Ignite
>  Issue Type: Bug
>  Components: binary
>Affects Versions: 2.7
>Reporter: Andrey Mashenkov
>Assignee: Andrey Mashenkov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> There are two flaky tests in the test case: 
> {{OptimizedMarshallerPooledSelfTest#testEvents}} and 
> {{OptimizedMarshallerPooledSelfTest#testServices}}. The tests timeout, the 
> reason is the following assertion:
> {noformat}
> [00:39:14]W:   [org.gridgain:ignite-core] java.lang.AssertionError
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedObjectStreamRegistry.closeOut(OptimizedObjectStreamRegistry.java:120)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller.marshal0(OptimizedMarshaller.java:209)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.marshal(AbstractNodeNameAwareMarshaller.java:56)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:10658)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.util.IgniteUtils.marshal(IgniteUtils.java:10722)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessage.partitionSizes(GridDhtPartitionsFullMessage.java:360)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.createPartitionsFullMessage(GridCachePartitionExchangeManager.java:1543)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.createPartitionsFullMessage(GridCachePartitionExchangeManager.java:1442)
> [00:39:14]W:   [org.gridgain:ignite-core] at 
> org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.createPartitionsMessage(GridDhtPartitionsExchangeFuture.java:2116){noformat}
> Looks like the assertion fails because we attempt to return a stream to the 
> pool which does not belong to it.



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