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

Nikita Amelchev updated IGNITE-20853:
-------------------------------------
    Description: 
The server node closes the client session if an exception occurs while parsing 
a request.

ClientCacheCreateWithConfigurationRequest parsing fails if any 
CacheConfiguration setter's check failed.
 
reproducer:
{noformat}
thinClient.createCache(new 
ClientCacheConfiguration().setName("cache1").setQueryParallelism(-1));
{noformat}


{noformat}
[14:17:14,046][SEVERE][client-connector-#170%2fae9742-ba69-4fa3-a7c3-fe9b881bb04d%][ClientListenerNioListener]
 Failed to parse client request.
java.lang.IllegalArgumentException: Ouch! Argument is invalid: Query 
parallelism must be positive.
        at 
org.apache.ignite.internal.util.GridArgumentCheck.ensure(GridArgumentCheck.java:110)
        at 
org.apache.ignite.configuration.CacheConfiguration.setQueryParallelism(CacheConfiguration.java:2176)
        at 
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheConfigurationSerializer.read(ClientCacheConfigurationSerializer.java:373)
        at 
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheCreateWithConfigurationRequest.<init>(ClientCacheCreateWithConfigurationRequest.java:48)
        at 
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:574)
        at 
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:433)
        at 
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:179)
        at 
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:57)
        at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
        at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
        at 
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
[2023-11-14T14:17:14,055][INFO 
][grid-nio-worker-thin-client-channel-0-#166%thinClient%][] Client disconnected
[2023-11-14T14:17:14,057][WARN ][test-runner-#1%client.ReliabilityTest%][] 
Failed to process response: Channel is closed
 org.apache.ignite.IgniteCheckedException: Channel is closed
        at 
org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7996) 
~[classes/:?]
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:263)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:194)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:144)
 ~[classes/:?]
        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:408)
 ~[classes/:?]
        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:311)
 ~[classes/:?]
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.lambda$service$0(ReliableChannel.java:205)
 ~[classes/:?]
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:835)
 [classes/:?]
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:788)
 [classes/:?]
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:205)
 [classes/:?]
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:186)
 [classes/:?]
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.request(ReliableChannel.java:321)
 [classes/:?]
        at 
org.apache.ignite.internal.client.thin.TcpIgniteClient.createCache(TcpIgniteClient.java:281)
 [classes/:?]
        at 
org.apache.ignite.client.ReliabilityTest.testTxWithIdIntersection(ReliabilityTest.java:447)
 [test-classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_201]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_201]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_201]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
 [junit-4.12.jar:4.12]
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
 [junit-4.12.jar:4.12]
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
 [junit-4.12.jar:4.12]
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
 [junit-4.12.jar:4.12]
        at 
org.apache.ignite.testframework.junits.GridAbstractTest$6.run(GridAbstractTest.java:2499)
 [test-classes/:?]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
Caused by: org.apache.ignite.client.ClientConnectionException: Channel is closed
        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:283)
 ~[classes/:?]
        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:261)
 ~[classes/:?]
        at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
 ~[classes/:?]
        at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:256)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:95)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:71)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:95)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3708)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:149)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2887)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2812)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioServer$ByteBufferNioClientWorker.processRead(GridNioServer.java:1189)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2526)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2281)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1910)
 ~[classes/:?]
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125) 
~[classes/:?]
        ... 1 more
{noformat}


  was:
The server node closes the client session if an exception occurs while parsing 
a request.

ClientCacheCreateWithConfigurationRequest parsing fails if any 
CacheConfiguration setter's check failed.
 
reproducer:
{noformat}
thinClient.createCache(new 
ClientCacheConfiguration().setName("cache1").setQueryParallelism(-1));
{noformat}


{noformat}
[2023-11-14T13:13:33,428][ERROR][client-connector-#240%controller.UserBySubjectIdTest0%][ClientListenerNioListener]
 Failed to parse client request.
 java.lang.IllegalArgumentException: Ouch! Argument is invalid: Query 
parallelism must be positive.
        at 
org.apache.ignite.internal.util.GridArgumentCheck.ensure(GridArgumentCheck.java:110)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.configuration.CacheConfiguration.setQueryParallelism(CacheConfiguration.java:2176)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheConfigurationSerializer.read(ClientCacheConfigurationSerializer.java:373)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheCreateWithConfigurationRequest.<init>(ClientCacheCreateWithConfigurationRequest.java:48)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:574)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:433)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:179)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:57)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125) 
[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_201]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_201]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
[2023-11-14T13:13:33,431][ERROR][client-connector-#349%controller.UserBySubjectIdTest1%][ClientListenerNioListener]
 Failed to parse client request.
 java.lang.IllegalArgumentException: Ouch! Argument is invalid: Query 
parallelism must be positive.
        at 
org.apache.ignite.internal.util.GridArgumentCheck.ensure(GridArgumentCheck.java:110)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.configuration.CacheConfiguration.setQueryParallelism(CacheConfiguration.java:2176)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheConfigurationSerializer.read(ClientCacheConfigurationSerializer.java:373)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheCreateWithConfigurationRequest.<init>(ClientCacheCreateWithConfigurationRequest.java:48)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:574)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:433)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:179)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:57)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125) 
[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_201]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_201]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
[2023-11-14T13:13:33,462][ERROR][client-connector-#352%controller.UserBySubjectIdTest1%][ClientListenerNioListener]
 Failed to parse client request.
 java.lang.IllegalArgumentException: Ouch! Argument is invalid: Query 
parallelism must be positive.
        at 
org.apache.ignite.internal.util.GridArgumentCheck.ensure(GridArgumentCheck.java:110)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.configuration.CacheConfiguration.setQueryParallelism(CacheConfiguration.java:2176)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheConfigurationSerializer.read(ClientCacheConfigurationSerializer.java:373)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheCreateWithConfigurationRequest.<init>(ClientCacheCreateWithConfigurationRequest.java:48)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:574)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:433)
 ~[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:179)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:57)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125) 
[ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
 [ignite-core-16.0.0-SNAPSHOT.jar:16.0.0-SNAPSHOT]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_201]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_201]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
org.apache.ignite.client.ClientConnectionException: Channel is closed
        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.convertException(TcpClientChannel.java:482)
        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:421)
        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:311)
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.lambda$service$0(ReliableChannel.java:205)
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:845)
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:788)
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:205)
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:186)
        at 
org.apache.ignite.internal.client.thin.ReliableChannel.request(ReliableChannel.java:321)
        at 
org.apache.ignite.internal.client.thin.TcpIgniteClient.createCache(TcpIgniteClient.java:281)
        at 
com.sbt.sbergrid.admin_ui.controller.UserBySubjectIdTest.testSqlUserBySubjectId(UserBySubjectIdTest.java:51)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at 
org.apache.ignite.testframework.junits.GridAbstractTest$6.run(GridAbstractTest.java:2499)
        at java.lang.Thread.run(Thread.java:748)
        Suppressed: org.apache.ignite.client.ClientConnectionException: Channel 
is closed
                ... 21 more
        Caused by: org.apache.ignite.client.ClientConnectionException: Channel 
is closed
                at 
org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:283)
                at 
org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:261)
                at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
                at 
org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
                at 
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:256)
                at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:95)
                at 
org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:71)
                at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:95)
                at 
org.apache.ignite.internal.util.nio.ssl.GridNioSslFilter.onSessionClosed(GridNioSslFilter.java:293)
                at 
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:95)
                at 
org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3708)
                at 
org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:149)
                at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2887)
                at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2812)
                at 
org.apache.ignite.internal.util.nio.GridNioServer$ByteBufferNioClientWorker.processRead(GridNioServer.java:1189)
                at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2526)
                at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2281)
                at 
org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1910)
                at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
                ... 1 more
        Suppressed: org.apache.ignite.client.ClientConnectionException: Channel 
is closed
                ... 21 more
{noformat}



> [Thin client] Fix channel closing on illegal argument for cache create request
> ------------------------------------------------------------------------------
>
>                 Key: IGNITE-20853
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20853
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Nikita Amelchev
>            Priority: Major
>
> The server node closes the client session if an exception occurs while 
> parsing a request.
> ClientCacheCreateWithConfigurationRequest parsing fails if any 
> CacheConfiguration setter's check failed.
>  
> reproducer:
> {noformat}
> thinClient.createCache(new 
> ClientCacheConfiguration().setName("cache1").setQueryParallelism(-1));
> {noformat}
> {noformat}
> [14:17:14,046][SEVERE][client-connector-#170%2fae9742-ba69-4fa3-a7c3-fe9b881bb04d%][ClientListenerNioListener]
>  Failed to parse client request.
> java.lang.IllegalArgumentException: Ouch! Argument is invalid: Query 
> parallelism must be positive.
>       at 
> org.apache.ignite.internal.util.GridArgumentCheck.ensure(GridArgumentCheck.java:110)
>       at 
> org.apache.ignite.configuration.CacheConfiguration.setQueryParallelism(CacheConfiguration.java:2176)
>       at 
> org.apache.ignite.internal.processors.platform.client.cache.ClientCacheConfigurationSerializer.read(ClientCacheConfigurationSerializer.java:373)
>       at 
> org.apache.ignite.internal.processors.platform.client.cache.ClientCacheCreateWithConfigurationRequest.<init>(ClientCacheCreateWithConfigurationRequest.java:48)
>       at 
> org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:574)
>       at 
> org.apache.ignite.internal.processors.platform.client.ClientMessageParser.decode(ClientMessageParser.java:433)
>       at 
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:179)
>       at 
> org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:57)
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
>       at 
> org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
>       at 
> org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> [2023-11-14T14:17:14,055][INFO 
> ][grid-nio-worker-thin-client-channel-0-#166%thinClient%][] Client 
> disconnected
> [2023-11-14T14:17:14,057][WARN ][test-runner-#1%client.ReliabilityTest%][] 
> Failed to process response: Channel is closed
>  org.apache.ignite.IgniteCheckedException: Channel is closed
>       at 
> org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7996) 
> ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:263)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:194)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:144)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:408)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:311)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.ReliableChannel.lambda$service$0(ReliableChannel.java:205)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:835)
>  [classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:788)
>  [classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:205)
>  [classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:186)
>  [classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.ReliableChannel.request(ReliableChannel.java:321)
>  [classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.TcpIgniteClient.createCache(TcpIgniteClient.java:281)
>  [classes/:?]
>       at 
> org.apache.ignite.client.ReliabilityTest.testTxWithIdIntersection(ReliabilityTest.java:447)
>  [test-classes/:?]
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[?:1.8.0_201]
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[?:1.8.0_201]
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[?:1.8.0_201]
>       at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]
>       at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>  [junit-4.12.jar:4.12]
>       at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>  [junit-4.12.jar:4.12]
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>  [junit-4.12.jar:4.12]
>       at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>  [junit-4.12.jar:4.12]
>       at 
> org.apache.ignite.testframework.junits.GridAbstractTest$6.run(GridAbstractTest.java:2499)
>  [test-classes/:?]
>       at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
> Caused by: org.apache.ignite.client.ClientConnectionException: Channel is 
> closed
>       at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.close(TcpClientChannel.java:283)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.onDisconnected(TcpClientChannel.java:261)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnection.onDisconnected(GridNioClientConnection.java:105)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientListener.onDisconnected(GridNioClientListener.java:42)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onSessionClosed(GridNioFilterChain.java:256)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:95)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioCodecFilter.onSessionClosed(GridNioCodecFilter.java:71)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedSessionClosed(GridNioFilterAdapter.java:95)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$HeadFilter.onSessionClosed(GridNioServer.java:3708)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioFilterChain.onSessionClosed(GridNioFilterChain.java:149)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2887)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.close(GridNioServer.java:2812)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$ByteBufferNioClientWorker.processRead(GridNioServer.java:1189)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.processSelectedKeysOptimized(GridNioServer.java:2526)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.bodyInternal(GridNioServer.java:2281)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.nio.GridNioServer$AbstractNioClientWorker.body(GridNioServer.java:1910)
>  ~[classes/:?]
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125) 
> ~[classes/:?]
>       ... 1 more
> {noformat}



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

Reply via email to