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

Pavel Tupitsyn updated IGNITE-19355:
------------------------------------
    Description: 
When *Table.ReadSchemaAsync* is called, we send a request for the given schema 
version every time, even if another request for that version is active (e.g. in 
case of multiple concurrent TUPLE_GET requests).

Instead of caching *ClientSchema*, we should cache *Task<ClientSchema>*, and 
use *GetOrAdd* to guarantee only one request for the given version. Make sure 
to handle failures - if a cached Task is failed, send a new request.

  was:
When *ClientTable.getSchema* is called, we send a request for the given schema 
version every time, even if another request for that version is active (e.g. in 
case of multiple concurrent TUPLE_GET requests).

Instead of caching *ClientSchema*, we should cache 
*CompletableFuture<ClientSchema>*, and use *computeIfAbsent* to guarantee only 
one request for the given version. Make sure to handle failures - if a cached 
future is failed, send a new request.


> .NET: Thin 3.0: Same schema version is retrieved multiple times in concurrent 
> scenarios
> ---------------------------------------------------------------------------------------
>
>                 Key: IGNITE-19355
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19355
>             Project: Ignite
>          Issue Type: Bug
>          Components: thin client
>            Reporter: Pavel Tupitsyn
>            Assignee: Pavel Tupitsyn
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>
> When *Table.ReadSchemaAsync* is called, we send a request for the given 
> schema version every time, even if another request for that version is active 
> (e.g. in case of multiple concurrent TUPLE_GET requests).
> Instead of caching *ClientSchema*, we should cache *Task<ClientSchema>*, and 
> use *GetOrAdd* to guarantee only one request for the given version. Make sure 
> to handle failures - if a cached Task is failed, send a new request.



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

Reply via email to