[jira] [Resolved] (IGNITE-21697) ConnectionManager ignores exceptional return value of ExecutorService.submit

2024-03-17 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko resolved IGNITE-21697.
--
Resolution: Duplicate

https://issues.apache.org/jira/browse/IGNITE-21696

> ConnectionManager ignores exceptional return value of ExecutorService.submit
> 
>
> Key: IGNITE-21697
> URL: https://issues.apache.org/jira/browse/IGNITE-21697
> Project: Ignite
>  Issue Type: Task
>Reporter: Viacheslav Blinov
>Priority: Minor
>  Labels: ignite-3, spotbugs
>
> Issue detected by SpotBugs. Specifically the warning reported is:
> {noformat}
> M B RV_RETURN_VALUE_IGNORED_BAD_PRACTICE RV: Exceptional return value of 
> java.util.concurrent.ExecutorService.submit(Callable) ignored in 
> org.apache.ignite.internal.network.netty.ConnectionManager.handleNodeLeft(String)
>   At ConnectionManager.java:[line 603]
> {noformat}
> If you don't check the result, you won't notice if the method invocation 
> signals unexpected behavior by returning an atypical return value.
> Investigate whenever this is a false-positive and we should suppress it, or 
> we should make a proper fix.
> At the result of investigation corresponding TODO should be removed in 
> spotbugs-excludes.xml



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


[jira] [Created] (IGNITE-21770) Improve logging for the ‘Probably disk is too busy, please check your device’ event (when reading from disk)

2024-03-17 Thread Oleg Valuyskiy (Jira)
Oleg Valuyskiy created IGNITE-21770:
---

 Summary: Improve logging for the ‘Probably disk is too busy, 
please check your device’ event (when reading from disk)
 Key: IGNITE-21770
 URL: https://issues.apache.org/jira/browse/IGNITE-21770
 Project: Ignite
  Issue Type: Improvement
Reporter: Oleg Valuyskiy
Assignee: Oleg Valuyskiy


Make logging messages more specific and include more information that could be 
necessary for analysis.

Stack trace example:
{code:java}
2024-03-15 04:23:25.395 [ERROR][ForkJoinPool.commonPool-worker-41][] 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.StorageException: Failed to read page 
[file=/opt/ignite/ssd/data/cell_6_node_4/cacheGroup-part/part-15909.bin, 
pageId=349803611487542]]]
org.apache.ignite.internal.processors.cache.persistence.StorageException: 
Failed to read page 
[file=/opt/ignite/ssd/data/cell_6_node_4/cacheGroup-part/part-15909.bin, 
pageId=349803611487542]
    at 
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStore.read(FilePageStore.java:547)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStore.read(FilePageStore.java:487)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageReadWriteManagerImpl.read(PageReadWriteManagerImpl.java:69)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.read(FilePageStoreManager.java:522)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl.acquirePage(PageMemoryImpl.java:930)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl.acquirePage(PageMemoryImpl.java:741)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl.acquirePage(PageMemoryImpl.java:730)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.doInitFromLink(CacheDataRowAdapter.java:304)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.initFromLink(CacheDataRowAdapter.java:165)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter.initFromLink(CacheDataRowAdapter.java:136)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.tree.DataRow.(DataRow.java:55)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.tree.CacheDataRowStore.dataRow(CacheDataRowStore.java:129)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.tree.CacheDataTree.getRow(CacheDataTree.java:424)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.tree.CacheDataTree.getRow(CacheDataTree.java:63)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.fillFromBuffer0(BPlusTree.java:6168)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.fillFromBuffer(BPlusTree.java:5917)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$AbstractForwardCursor.nextPage(BPlusTree.java:5971)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree$ForwardCursor.next(BPlusTree.java:6221)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$3.onHasNext(IgniteCacheOffheapManagerImpl.java:913)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:56)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.verify.IdleVerifyUtility.calculatePartitionHash(IdleVerifyUtility.java:269)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
org.apache.ignite.internal.processors.cache.verify.VerifyBackupPartitionsTaskV2$VerifyBackupPartitionsJobV2.lambda$calculatePartitionHashAsync$3(VerifyBackupPartitionsTaskV2.java:478)
 ~[ignite-core-14.1.2.jar:14.1.2]
    at 
java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1448) 
~[?:?]
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.j

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

2024-03-17 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov reassigned IGNITE-12625:
---

Assignee: (was: Mikhail Petrov)

> 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
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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.



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


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

2024-03-17 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov reassigned IGNITE-12625:
---

Assignee: Mikhail Petrov

> 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: Mikhail Petrov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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.



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


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

2024-03-17 Thread Mikhail Petrov (Jira)


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

Mikhail Petrov reassigned IGNITE-12625:
---

Assignee: (was: Mikhail Petrov)

> 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
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> 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.



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


[jira] [Updated] (IGNITE-21636) Code cleanup

2024-03-17 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-21636:
--
Fix Version/s: 2.17

> Code cleanup
> 
>
> Key: IGNITE-21636
> URL: https://issues.apache.org/jira/browse/IGNITE-21636
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Trivial
> Fix For: 2.17
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Removing of unused 'mvccEnabled', codestyle fixex, +abbreviations, finals and 
> etc.



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


[jira] [Updated] (IGNITE-21636) Code cleanup

2024-03-17 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-21636:
--
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Code cleanup
> 
>
> Key: IGNITE-21636
> URL: https://issues.apache.org/jira/browse/IGNITE-21636
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Trivial
> Fix For: 2.17
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Removing of unused 'mvccEnabled', codestyle fixex, +abbreviations, finals and 
> etc.



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


[jira] [Assigned] (IGNITE-21636) Code cleanup

2024-03-17 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-21636:
-

Assignee: Vladimir Steshin

> Code cleanup
> 
>
> Key: IGNITE-21636
> URL: https://issues.apache.org/jira/browse/IGNITE-21636
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Trivial
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Removing of unused 'mvccEnabled', codestyle fixex, +abbreviations, finals and 
> etc.



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