[jira] [Updated] (IGNITE-20424) Slow thin client connection can lead to consuming of huge amount of heap

2023-10-22 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov updated IGNITE-20424:

Description: 
All messages designated for the thin client are accumulated in the selector 
queue GridSelectorNioSessionImpl#queue before they are sent. Note that  
GridSelectorNioSessionImpl#queue for the Ignite Thin Client currently is 
unbound. If the thin client connection is slow and a huge number of heavy 
messages are about to send to the thin client, GridSelectorNioSessionImpl#queue 
growing size can lead to OOM.

See 
1. https://issues.apache.org/jira/browse/IGNITE-20327  
2. https://github.com/apache/ignite/issues/10559


We need to investigate mechanisms to limit the thin client message queue size.

Currently, two mechanisms related to the described problem have already been 
implemented:
1. GridNioServer.Builder#messageQueueSizeListener is used to limit the message 
queue size for Ignite Thick clients - if the message queue size limit is 
exceeded, the client node will be forced to leave the cluster.
2. GridNioServer.Builder#sendQueueLimit is used to block a thread that sends a 
message if the message queue size limit is exceeded. Currently is used with 
Thick Clients and Ignite REST clients.

The first approach was chosen to reuse it for thin clients.

  was:
All messages designated for the thin client are accumulated in the selector 
queue GridSelectorNioSessionImpl#queue before they are sent. Note that  
GridSelectorNioSessionImpl#queue for the Ignite Thin Client currently is 
unbound. If the thin client connection is slow and a huge number of heavy 
messages are about to send to the thin client, GridSelectorNioSessionImpl#queue 
growing size can lead to OOM.

See 
1. https://issues.apache.org/jira/browse/IGNITE-20327  
2. https://github.com/apache/ignite/issues/10559


We need to investigate mechanisms to limit the thin client message queue size.

Currently, two mechanisms related to the described problem have already been 
implemented:
1. GridNioServer.Builder#messageQueueSizeListener is used to limit the message 
queue size for Ignite Thick clients - if the message queue size limit is 
exceeded, the client node will be forced to leave the cluster.
2. GridNioServer.Builder#sendQueueLimit is used to block a thread that sends a 
message if the message queue size limit is exceeded. Currently is used with 
Thick Clients and Ignite REST clients.




> Slow thin client connection can lead to consuming of huge amount of heap 
> -
>
> Key: IGNITE-20424
> URL: https://issues.apache.org/jira/browse/IGNITE-20424
> Project: Ignite
>  Issue Type: Task
>Reporter: Mikhail Petrov
>Assignee: Mikhail Petrov
>Priority: Major
>  Labels: ise
> Fix For: 2.16
>
>  Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> All messages designated for the thin client are accumulated in the selector 
> queue GridSelectorNioSessionImpl#queue before they are sent. Note that  
> GridSelectorNioSessionImpl#queue for the Ignite Thin Client currently is 
> unbound. If the thin client connection is slow and a huge number of heavy 
> messages are about to send to the thin client, 
> GridSelectorNioSessionImpl#queue growing size can lead to OOM.
> See 
> 1. https://issues.apache.org/jira/browse/IGNITE-20327  
> 2. https://github.com/apache/ignite/issues/10559
> We need to investigate mechanisms to limit the thin client message queue size.
> Currently, two mechanisms related to the described problem have already been 
> implemented:
> 1. GridNioServer.Builder#messageQueueSizeListener is used to limit the 
> message queue size for Ignite Thick clients - if the message queue size limit 
> is exceeded, the client node will be forced to leave the cluster.
> 2. GridNioServer.Builder#sendQueueLimit is used to block a thread that sends 
> a message if the message queue size limit is exceeded. Currently is used with 
> Thick Clients and Ignite REST clients.
> The first approach was chosen to reuse it for thin clients.



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


[jira] [Updated] (IGNITE-20688) Java Thin Client - Error while deserializing Collection

2023-10-22 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov updated IGNITE-20688:

Priority: Critical  (was: Major)

> Java Thin Client - Error while deserializing Collection
> ---
>
> Key: IGNITE-20688
> URL: https://issues.apache.org/jira/browse/IGNITE-20688
> Project: Ignite
>  Issue Type: Bug
>  Components: binary, thin client
>Affects Versions: 2.9, 2.10, 2.12, 2.13, 2.14, 2.15
>Reporter: Rahul Mohan
>Assignee: Mikhail Petrov
>Priority: Critical
>  Labels: ise
> Fix For: 2.16
>
> Attachments: image001.png
>
>
> I have encountered an issue in deserializing cache values which are of 
> Collection type.
> The issue occurs if a field in different objects  within the  collection 
> points  to the same reference.
> *Versions:*
> org.apache.ignite:ignite-core:2.9.0 to org.apache.ignite:ignite-core:2.15.0
>  
> {code:java}
> Person.java
> public class Person implements Serializable {
> private String id;
> private String firstName;
> private String lastName;
> private double salary;
> private String country;
> private String deleted;
> private Set accounts;
> }
> Client
>     ClientCacheConfiguration cacheCfg = new 
> ClientCacheConfiguration().setName(cacheName).
>     setCacheMode(CacheMode.REPLICATED).
>     
> setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
>  
>     cache = client.getOrCreateCache(cacheCfg);
>  
>     Set set = new HashSet<>();
> set.add("1");
>  
>     List persons = new ArrayList<>();
>     persons.add(new Person("105286a4","Jack","Smith",1f, 
> "USA","false", set));
>     persons.add(new Person("98545b0fd3af","John", "Doe", 50f, 
> "Australia","false", null));
>     persons.add(new Person("98545b0fd3afd","Hari","M",40f, 
> "India", null, null));
>     persons.add(new 
> Person("985488b0fd3ae","Bugs","Bunny",30f,"Wabbit Land ", null, set));
>     cache.put("group1", value) // Write collection to cache
> 
> List persons = (List) cache.get("group1"); // Get 
> from cache, Exception here {code}
> 
> *Exception:*
> {code:java}
> class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize 
> object [typeName=com.ignite.example.model.Person]
>     at 
> org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:927)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>     at 
> org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:316)
>     at 
> org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:557)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapCollection(ClientUtils.java:578)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:562)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:546)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:556)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:561)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache$$Lambda$395/1950117092.apply(Unknown
>  Source)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:284)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:219)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:198)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:261)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:508)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
>     at 
> com.ignite.example.service.ApacheIgniteService.printAllKeys(ApacheIgniteService.java:117)
>     at 
> com.ignite.example.service.ApacheIgniteService.init(ApacheIgniteService.java:103)
>     at 
> 

[jira] [Updated] (IGNITE-20688) Java Thin Client - Error while deserializing Collection

2023-10-22 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov updated IGNITE-20688:

Fix Version/s: 2.16

> Java Thin Client - Error while deserializing Collection
> ---
>
> Key: IGNITE-20688
> URL: https://issues.apache.org/jira/browse/IGNITE-20688
> Project: Ignite
>  Issue Type: Bug
>  Components: binary, thin client
>Affects Versions: 2.9, 2.10, 2.12, 2.13, 2.14, 2.15
>Reporter: Rahul Mohan
>Assignee: Mikhail Petrov
>Priority: Major
> Fix For: 2.16
>
> Attachments: image001.png
>
>
> I have encountered an issue in deserializing cache values which are of 
> Collection type.
> The issue occurs if a field in different objects  within the  collection 
> points  to the same reference.
> *Versions:*
> org.apache.ignite:ignite-core:2.9.0 to org.apache.ignite:ignite-core:2.15.0
>  
> {code:java}
> Person.java
> public class Person implements Serializable {
> private String id;
> private String firstName;
> private String lastName;
> private double salary;
> private String country;
> private String deleted;
> private Set accounts;
> }
> Client
>     ClientCacheConfiguration cacheCfg = new 
> ClientCacheConfiguration().setName(cacheName).
>     setCacheMode(CacheMode.REPLICATED).
>     
> setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
>  
>     cache = client.getOrCreateCache(cacheCfg);
>  
>     Set set = new HashSet<>();
> set.add("1");
>  
>     List persons = new ArrayList<>();
>     persons.add(new Person("105286a4","Jack","Smith",1f, 
> "USA","false", set));
>     persons.add(new Person("98545b0fd3af","John", "Doe", 50f, 
> "Australia","false", null));
>     persons.add(new Person("98545b0fd3afd","Hari","M",40f, 
> "India", null, null));
>     persons.add(new 
> Person("985488b0fd3ae","Bugs","Bunny",30f,"Wabbit Land ", null, set));
>     cache.put("group1", value) // Write collection to cache
> 
> List persons = (List) cache.get("group1"); // Get 
> from cache, Exception here {code}
> 
> *Exception:*
> {code:java}
> class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize 
> object [typeName=com.ignite.example.model.Person]
>     at 
> org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:927)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>     at 
> org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:316)
>     at 
> org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:557)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapCollection(ClientUtils.java:578)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:562)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:546)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:556)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:561)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache$$Lambda$395/1950117092.apply(Unknown
>  Source)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:284)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:219)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:198)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:261)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:508)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
>     at 
> com.ignite.example.service.ApacheIgniteService.printAllKeys(ApacheIgniteService.java:117)
>     at 
> com.ignite.example.service.ApacheIgniteService.init(ApacheIgniteService.java:103)
>     at 
> 

[jira] [Updated] (IGNITE-20688) Java Thin Client - Error while deserializing Collection

2023-10-22 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov updated IGNITE-20688:

Labels: ise  (was: )

> Java Thin Client - Error while deserializing Collection
> ---
>
> Key: IGNITE-20688
> URL: https://issues.apache.org/jira/browse/IGNITE-20688
> Project: Ignite
>  Issue Type: Bug
>  Components: binary, thin client
>Affects Versions: 2.9, 2.10, 2.12, 2.13, 2.14, 2.15
>Reporter: Rahul Mohan
>Assignee: Mikhail Petrov
>Priority: Major
>  Labels: ise
> Fix For: 2.16
>
> Attachments: image001.png
>
>
> I have encountered an issue in deserializing cache values which are of 
> Collection type.
> The issue occurs if a field in different objects  within the  collection 
> points  to the same reference.
> *Versions:*
> org.apache.ignite:ignite-core:2.9.0 to org.apache.ignite:ignite-core:2.15.0
>  
> {code:java}
> Person.java
> public class Person implements Serializable {
> private String id;
> private String firstName;
> private String lastName;
> private double salary;
> private String country;
> private String deleted;
> private Set accounts;
> }
> Client
>     ClientCacheConfiguration cacheCfg = new 
> ClientCacheConfiguration().setName(cacheName).
>     setCacheMode(CacheMode.REPLICATED).
>     
> setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
>  
>     cache = client.getOrCreateCache(cacheCfg);
>  
>     Set set = new HashSet<>();
> set.add("1");
>  
>     List persons = new ArrayList<>();
>     persons.add(new Person("105286a4","Jack","Smith",1f, 
> "USA","false", set));
>     persons.add(new Person("98545b0fd3af","John", "Doe", 50f, 
> "Australia","false", null));
>     persons.add(new Person("98545b0fd3afd","Hari","M",40f, 
> "India", null, null));
>     persons.add(new 
> Person("985488b0fd3ae","Bugs","Bunny",30f,"Wabbit Land ", null, set));
>     cache.put("group1", value) // Write collection to cache
> 
> List persons = (List) cache.get("group1"); // Get 
> from cache, Exception here {code}
> 
> *Exception:*
> {code:java}
> class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize 
> object [typeName=com.ignite.example.model.Person]
>     at 
> org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:927)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>     at 
> org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:316)
>     at 
> org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:557)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapCollection(ClientUtils.java:578)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:562)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:546)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:556)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:561)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache$$Lambda$395/1950117092.apply(Unknown
>  Source)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:284)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:219)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:198)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:261)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:508)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
>     at 
> com.ignite.example.service.ApacheIgniteService.printAllKeys(ApacheIgniteService.java:117)
>     at 
> com.ignite.example.service.ApacheIgniteService.init(ApacheIgniteService.java:103)
>     at 
> 

[jira] [Commented] (IGNITE-20688) Java Thin Client - Error while deserializing Collection

2023-10-22 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov commented on IGNITE-20688:
-

[~rahmo] Thank you for reporting the issue! 
The information you provided is enough to reproduce and confirm the problem. We 
are doing our best to fix it as soon as possible.

As a WA you can wrap List  that you put in the cache with some other 
class e.g. 

{code:java}
 public static class Organization implements Serializable {
private List employees;
  }
{code}


> Java Thin Client - Error while deserializing Collection
> ---
>
> Key: IGNITE-20688
> URL: https://issues.apache.org/jira/browse/IGNITE-20688
> Project: Ignite
>  Issue Type: Bug
>  Components: binary, thin client
>Affects Versions: 2.9, 2.10, 2.12, 2.13, 2.14, 2.15
>Reporter: Rahul Mohan
>Assignee: Mikhail Petrov
>Priority: Major
> Attachments: image001.png
>
>
> I have encountered an issue in deserializing cache values which are of 
> Collection type.
> The issue occurs if a field in different objects  within the  collection 
> points  to the same reference.
> *Versions:*
> org.apache.ignite:ignite-core:2.9.0 to org.apache.ignite:ignite-core:2.15.0
>  
> {code:java}
> Person.java
> public class Person implements Serializable {
> private String id;
> private String firstName;
> private String lastName;
> private double salary;
> private String country;
> private String deleted;
> private Set accounts;
> }
> Client
>     ClientCacheConfiguration cacheCfg = new 
> ClientCacheConfiguration().setName(cacheName).
>     setCacheMode(CacheMode.REPLICATED).
>     
> setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
>  
>     cache = client.getOrCreateCache(cacheCfg);
>  
>     Set set = new HashSet<>();
> set.add("1");
>  
>     List persons = new ArrayList<>();
>     persons.add(new Person("105286a4","Jack","Smith",1f, 
> "USA","false", set));
>     persons.add(new Person("98545b0fd3af","John", "Doe", 50f, 
> "Australia","false", null));
>     persons.add(new Person("98545b0fd3afd","Hari","M",40f, 
> "India", null, null));
>     persons.add(new 
> Person("985488b0fd3ae","Bugs","Bunny",30f,"Wabbit Land ", null, set));
>     cache.put("group1", value) // Write collection to cache
> 
> List persons = (List) cache.get("group1"); // Get 
> from cache, Exception here {code}
> 
> *Exception:*
> {code:java}
> class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize 
> object [typeName=com.ignite.example.model.Person]
>     at 
> org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:927)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>     at 
> org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:316)
>     at 
> org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:557)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapCollection(ClientUtils.java:578)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:562)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:546)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:556)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:561)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache$$Lambda$395/1950117092.apply(Unknown
>  Source)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:284)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:219)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:198)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:261)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:508)
>     at 
> 

[jira] [Updated] (IGNITE-20599) Implement a 'NOT_TOMBSTONE' operation in the meta storage dsl.

2023-10-22 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-20599:
---
Fix Version/s: 3.0.0-beta2

> Implement a 'NOT_TOMBSTONE' operation in the meta storage dsl.
> --
>
> Key: IGNITE-20599
> URL: https://issues.apache.org/jira/browse/IGNITE-20599
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Uttsel
>Assignee: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> *Motivation*
> In https://issues.apache.org/jira/browse/IGNITE-20561 we need to create a 
> condition for a ms invoke with NOT_TOMBSTONE. We could do this like this:
> {code:java}
> and(
>     notExists(dataNodes(zoneId)),
>     notTombstone(dataNodes(zoneId))
> ){code}
> But there are no {{notTombstone}} in the meta storage dsl.
> I propose to implement {{notTombstone}} operation.
> *Definition of done*
> {{notTombstone}} operation  is implemented.



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


[jira] [Commented] (IGNITE-20599) Implement a 'NOT_TOMBSTONE' operation in the meta storage dsl.

2023-10-22 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov commented on IGNITE-20599:


Merged 57593d5201c895e0db6e59b11345b1baed9425c1

> Implement a 'NOT_TOMBSTONE' operation in the meta storage dsl.
> --
>
> Key: IGNITE-20599
> URL: https://issues.apache.org/jira/browse/IGNITE-20599
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Uttsel
>Assignee: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> *Motivation*
> In https://issues.apache.org/jira/browse/IGNITE-20561 we need to create a 
> condition for a ms invoke with NOT_TOMBSTONE. We could do this like this:
> {code:java}
> and(
>     notExists(dataNodes(zoneId)),
>     notTombstone(dataNodes(zoneId))
> ){code}
> But there are no {{notTombstone}} in the meta storage dsl.
> I propose to implement {{notTombstone}} operation.
> *Definition of done*
> {{notTombstone}} operation  is implemented.



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


[jira] [Updated] (IGNITE-20481) Java client: Balance requests across connections

2023-10-22 Thread ZhangJian He (Jira)


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

ZhangJian He updated IGNITE-20481:
--
Fix Version/s: 2.16
   (was: 2.15)

> Java client: Balance requests across connections
> 
>
> Key: IGNITE-20481
> URL: https://issues.apache.org/jira/browse/IGNITE-20481
> Project: Ignite
>  Issue Type: New Feature
>  Components: thin client
>Affects Versions: 2.15
>Reporter: Wei Cheng
>Assignee: Wei Cheng
>Priority: Major
> Fix For: 2.16
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Java client: Balance requests across connections



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


[jira] [Commented] (IGNITE-20688) Java Thin Client - Error while deserializing Collection

2023-10-22 Thread Rahul Mohan (Jira)


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

Rahul Mohan commented on IGNITE-20688:
--

Hi [~PetrovMikhail] ,

Let me know if you need more details. I am also open to contributing here if it 
helps, as this is seriously affecting Ignite usage in our apps. 

> Java Thin Client - Error while deserializing Collection
> ---
>
> Key: IGNITE-20688
> URL: https://issues.apache.org/jira/browse/IGNITE-20688
> Project: Ignite
>  Issue Type: Bug
>  Components: binary, thin client
>Affects Versions: 2.9, 2.10, 2.12, 2.13, 2.14, 2.15
>Reporter: Rahul Mohan
>Assignee: Mikhail Petrov
>Priority: Major
> Attachments: image001.png
>
>
> I have encountered an issue in deserializing cache values which are of 
> Collection type.
> The issue occurs if a field in different objects  within the  collection 
> points  to the same reference.
> *Versions:*
> org.apache.ignite:ignite-core:2.9.0 to org.apache.ignite:ignite-core:2.15.0
>  
> {code:java}
> Person.java
> public class Person implements Serializable {
> private String id;
> private String firstName;
> private String lastName;
> private double salary;
> private String country;
> private String deleted;
> private Set accounts;
> }
> Client
>     ClientCacheConfiguration cacheCfg = new 
> ClientCacheConfiguration().setName(cacheName).
>     setCacheMode(CacheMode.REPLICATED).
>     
> setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
>  
>     cache = client.getOrCreateCache(cacheCfg);
>  
>     Set set = new HashSet<>();
> set.add("1");
>  
>     List persons = new ArrayList<>();
>     persons.add(new Person("105286a4","Jack","Smith",1f, 
> "USA","false", set));
>     persons.add(new Person("98545b0fd3af","John", "Doe", 50f, 
> "Australia","false", null));
>     persons.add(new Person("98545b0fd3afd","Hari","M",40f, 
> "India", null, null));
>     persons.add(new 
> Person("985488b0fd3ae","Bugs","Bunny",30f,"Wabbit Land ", null, set));
>     cache.put("group1", value) // Write collection to cache
> 
> List persons = (List) cache.get("group1"); // Get 
> from cache, Exception here {code}
> 
> *Exception:*
> {code:java}
> class org.apache.ignite.binary.BinaryObjectException: Failed to deserialize 
> object [typeName=com.ignite.example.model.Person]
>     at 
> org.apache.ignite.internal.binary.BinaryClassDescriptor.read(BinaryClassDescriptor.java:927)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1764)
>     at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>     at 
> org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:316)
>     at 
> org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:557)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapCollection(ClientUtils.java:578)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.unwrapBinary(ClientUtils.java:562)
>     at 
> org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:546)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:556)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:561)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache$$Lambda$395/1950117092.apply(Unknown
>  Source)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:284)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:219)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:198)
>     at 
> org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:261)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:508)
>     at 
> org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
>     at 
> com.ignite.example.service.ApacheIgniteService.printAllKeys(ApacheIgniteService.java:117)
>     at 
>