Nikita Amelchev created IGNITE-20853:
----------------------------------------
Summary: [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
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}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)