[jira] [Updated] (IGNITE-20424) Slow thin client connection can lead to consuming of huge amount of heap
[ 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
[ 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
[ 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
[ 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
[ 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.
[ 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.
[ 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
[ 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
[ 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 >