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

Igor Sapego updated IGNITE-17387:
---------------------------------
    Description: 
If user specifies a password longer than 64k (with the default conf) we get a 
protocol mismatch error:

{code}
org.apache.ignite.internal.client.thin.ClientProtocolError: Protocol version 
mismatch: client 1.7.0 / server 2.8.0. Server details: Unsupported version: 
1.0.0
{code}

It happens because of the overflow of socket send buffer (limit is 64K see 
https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#setReceiveBufferSize(int)
 ).

So WA is to extend default socket buffers size and add limitation to their 
passwords sizes (e.g restrict max password size to 32K).

// if password is about 60K it will be OK for default config, if more than 64K 
you will receive version protocol error (because 
// TcpClientChannel would read wrong data from buffer). Here we extend default 
buffer sizes to 100K to bypass this issue.

{code}
new ClientConnectorConfiguration()
                    .setSocketSendBufferSize(100 * 1024)
                    .setSocketReceiveBufferSize(100 * 1024)
{code}

  was:
If user specifies a password longer than 64k (with the default conf) we get a 
protocol mismatch error:

{{org.apache.ignite.internal.client.thin.ClientProtocolError: Protocol version 
mismatch: client 1.7.0 / server 2.8.0. Server details: Unsupported version: 
1.0.0}}

It happens because of the overflow of socket send buffer (limit is 64K see 
https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#setReceiveBufferSize(int)
 ).

So WA is to extend default socket buffers size and add limitation to their 
passwords sizes (e.g restrict max password size to 32K).

// if password is about 60K it will be OK for default config, if more than 64K 
you will receive version protocol error (because 
// TcpClientChannel would read wrong data from buffer). Here we extend default 
buffer sizes to 100K to bypass this issue.

{code}
new ClientConnectorConfiguration()
                    .setSocketSendBufferSize(100 * 1024)
                    .setSocketReceiveBufferSize(100 * 1024)
{code}


> Protocol version mismatch in case of a long password
> ----------------------------------------------------
>
>                 Key: IGNITE-17387
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17387
>             Project: Ignite
>          Issue Type: Bug
>          Components: thin client
>            Reporter: Igor Sapego
>            Assignee: Igor Sapego
>            Priority: Major
>
> If user specifies a password longer than 64k (with the default conf) we get a 
> protocol mismatch error:
> {code}
> org.apache.ignite.internal.client.thin.ClientProtocolError: Protocol version 
> mismatch: client 1.7.0 / server 2.8.0. Server details: Unsupported version: 
> 1.0.0
> {code}
> It happens because of the overflow of socket send buffer (limit is 64K see 
> https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#setReceiveBufferSize(int)
>  ).
> So WA is to extend default socket buffers size and add limitation to their 
> passwords sizes (e.g restrict max password size to 32K).
> // if password is about 60K it will be OK for default config, if more than 
> 64K you will receive version protocol error (because 
> // TcpClientChannel would read wrong data from buffer). Here we extend 
> default buffer sizes to 100K to bypass this issue.
> {code}
> new ClientConnectorConfiguration()
>                     .setSocketSendBufferSize(100 * 1024)
>                     .setSocketReceiveBufferSize(100 * 1024)
> {code}



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

Reply via email to