You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Tupitsyn (Jira)" <ji...@apache.org> on 2023/04/24 12:25:00 UTC
[jira] [Updated] (IGNITE-19355) .NET: Thin 3.0: Same schema version is retrieved multiple times in concurrent scenarios
[ 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)