|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface RetryLatch
A blockingAllowed structure that can be used to create blocking transactions. When a transaction blocks, a 'listener' is added to each read transactional object. This listener is the Latch. Each transactional object can have a set of listeners.
The Latch can safely be created once by a Txn and reused by the same Txn because it works based on an listenerEra. So of opens happen with an older listener-era, the open is ignored. So even though the Latch could be attached to an older ref that didn't get updated, but is updated eventually even though the latch is notified by another ref, there is no problem. By resetting it, the listenerEra-counter is incremented, so that call to open or await are ignored.
| Method Summary | |
|---|---|
void |
await(long expectedEra,
String transactionFamilyName)
Awaits for this Latch to open. |
long |
awaitNanos(long expectedEra,
long nanosTimeout,
String transactionFamilyName)
Awaits for this latch to open with a timeout. |
long |
awaitNanosUninterruptible(long expectedEra,
long nanosTimeout)
Awaits for this latch to open with a timeout. |
void |
awaitUninterruptible(long expectedEra)
Awaits for this latch to open. |
long |
getEra()
Gets the current era. |
boolean |
isOpen()
Checks if the Latch is open. |
void |
open(long expectedEra)
Opens this latch only if the expectedEra is the same. |
void |
reset()
Prepares the Latch for pooling. |
| Method Detail |
|---|
boolean isOpen()
void open(long expectedEra)
expectedEra - the expected era.long getEra()
void awaitUninterruptible(long expectedEra)
expectedEra - the expected era. If the era is different, the await always succeeds.
void await(long expectedEra,
String transactionFamilyName)
expectedEra - the expected era.transactionFamilyName - the name of the transaction (only needed for creating
a usable message in the RetryInterruptedException).
RetryInterruptedException
long awaitNanosUninterruptible(long expectedEra,
long nanosTimeout)
expectedEra - the expected era.nanosTimeout - the timeout in nanoseconds
long awaitNanos(long expectedEra,
long nanosTimeout,
String transactionFamilyName)
expectedEra - the expected erananosTimeout - the timeout in nanoseconds. Can safely be called with a zero or negative timeouttransactionFamilyName - the name of the transaction (only needed for creating
a usable message in the RetryInterruptedException).
RetryInterruptedExceptionvoid reset()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||