[
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)