[
https://issues.apache.org/jira/browse/IGNITE-16892?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexander Lapin updated IGNITE-16892:
-------------------------------------
Description:
1. Lock management logic will be introduced in IGNITE-17255
2. Lock storages will be introduced in IGNITE-15932
Given ticket is a sort of a bridge between 1 and 2 that will adjust LockManager
methods along with corresponding implementation with LockMode parameter that
will clarify whether lock is
* Exclusive
* Shared
* IntentExclusive
* IntentShared
* SharedAndIntentExclusive
{code:java}
CompletableFuture<Lock> acquire(UUID txId, <?> lockName LockMode lockMode);
void release(Object key, UUID txId, Lock lock, LockMode lockMode) throws
LockException;
Iterator<Lock> locks(UUID txId) {code}
lockName is a sort of lock locator, that either:
* RowId for data storage locks.
* UUID or similar to table/index commonly intent locks.
* Index keys.
Details will be elaborated during IGNITE-17255 implementation.
was:
1. Lock management logic will be introduced in IGNITE-17255
2. Lock storages will be introduced in IGNITE-15932
Given ticket is a sort of a bridge between 1 and 2 that will add several
methods similar to
{code:java}
/**
* Attempts to acquire a lock for the specified {@code key} in exclusive mode.
*
* @param key The key.
* @param txId Transaction id.
* @return The future that will be completed when a lock is successfully
acquired.
* @throws LockException When a lock can't be taken due to possible deadlock.
*/
// Index keys locks
public CompletableFuture<Void> tryAcquire(Object key, UUID txId);
// Row store locks
public CompletableFuture<Void> tryAcquire(RowId rowId, UUID txId);
// Intent locks
public CompletableFuture<Void> tryAcquire(UUID entityUUID, UUID txId);
/**
* Attempts to release a lock for the specified {@code key} in exclusive mode.
*
* @param key The key.
* @param txId Transaction id.
* @throws LockException If the unlock operation is invalid.
*/
// Index keys locks
public void tryRelease(Object key, UUID txId) throws LockException;
// Row store locks
public void tryRelease(RowId rowId, UUID txId) throws LockException;
// Intent locks
public void tryRelease(UUID entityUUID, UUID txId) throws LockException;
/**
* Attempts to acquire a lock for the specified {@code key} in shared mode.
*
* @param key The key.
* @param txId Transaction id.
* @return The future that will be completed when a lock is successfully
acquired.
* @throws LockException When a lock can't be taken due to possible deadlock.
*/
// Index keys locks
public CompletableFuture<Void> tryAcquireShared(Object key, UUID txId);
// Row store locks
public CompletableFuture<Void> tryAcquireShared(RowId rowId, UUID txId);
// Intent locks
public CompletableFuture<Void> tryAcquireShared(UUID entityUUID, UUID txId);
/**
* Attempts to release a lock for the specified {@code key} in shared mode.
*
* @param key The key.
* @param txId Transaction id.
* @throws LockException If the unlock operation is invalid.
*/
// Index keys locks
public void tryReleaseShared(Object key, UUID txId) throws LockException;
// Row store locks
public void tryReleaseShared(RowId rowId, UUID txId) throws LockException;
// Intent locks
public void tryReleaseShared(UUID entityUUID, UUID txId) throws
LockException;{code}
to TxManager with corresponding implementation.
> Update lock manager in order to soupport S, X and I locks
> ---------------------------------------------------------
>
> Key: IGNITE-16892
> URL: https://issues.apache.org/jira/browse/IGNITE-16892
> Project: Ignite
> Issue Type: Improvement
> Reporter: Alexander Lapin
> Priority: Major
> Labels: ignite-3, transaction3_rw
>
> 1. Lock management logic will be introduced in IGNITE-17255
> 2. Lock storages will be introduced in IGNITE-15932
> Given ticket is a sort of a bridge between 1 and 2 that will adjust
> LockManager methods along with corresponding implementation with LockMode
> parameter that will clarify whether lock is
> * Exclusive
> * Shared
> * IntentExclusive
> * IntentShared
> * SharedAndIntentExclusive
> {code:java}
> CompletableFuture<Lock> acquire(UUID txId, <?> lockName LockMode lockMode);
> void release(Object key, UUID txId, Lock lock, LockMode lockMode) throws
> LockException;
> Iterator<Lock> locks(UUID txId) {code}
> lockName is a sort of lock locator, that either:
> * RowId for data storage locks.
> * UUID or similar to table/index commonly intent locks.
> * Index keys.
> Details will be elaborated during IGNITE-17255 implementation.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)