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

Vladislav Pyatkov reassigned IGNITE-28897:
------------------------------------------

    Assignee: Vladislav Pyatkov

> Return detailed result from transactional lock API
> --------------------------------------------------
>
>                 Key: IGNITE-28897
>                 URL: https://issues.apache.org/jira/browse/IGNITE-28897
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Vladislav Pyatkov
>            Assignee: Vladislav Pyatkov
>            Priority: Major
>              Labels: ignite-2
>
> Change the behavior of lockTxEntry, lockTxEntries, and the async* variants: 
> instead of `boolean` they have to return Map<CacheEntry<K, V>, Boolean>.
> * Return Map<CacheEntry<K, V>, Boolean> with an outcome for each entry.
> * Send expected versions to primary nodes.
> * Validate each version on the primary.
> * Return false for lock conflicts or version mismatches.
> * Return true for locks already held by the transaction.
> * Preserve existing timeout semantics.
> h3. Definition of done
> * Cover partial success, repeated acquisition, near caches, timeouts, and 
> batched requests with tests.
> * All existing SELECT FOR UPDATE tests pass.
> Proposed internal API:
> {code:java}
> /**
>  * @return Lock result for each supplied entry, in input iteration order.
> */
> public Map<CacheEntry<K, V>, Boolean> lockTxEntries(Collection<CacheEntry<K, 
> V>> entries, long waitTimeout)
> /**
>  * Asynchronous counterpart of {@link #lockTxEntries(Collection, long)} with 
> the same partial-success semantics.
>  * @return Future containing a lock result for each supplied entry.
> */
> public IgniteInternalFuture<Map<CacheEntry<K, V>, Boolean>> 
> lockTxEntriesAsync(Collection<CacheEntry<K, V>> entries, long waitTimeout);
> {code}



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

Reply via email to