java.lang.Object | |
↳ | com.atlassian.confluence.cache.tangosol.hibernate.CoherenceCacheStrategy |
This class is a copied from net.sf.hibernate.cache.ReadWriteCache.
The difference is that this class doesn't synchronize on a method level and
instead of explicitly calling lock->operation->unlock on the underlying cache
it makes use of Coherence's
com.tangosol.util.InvocableMap.EntryProcessor to reduce the amount of
network requests.
This implementation only works with the CoherenceInvokableHibernateCache
.
Nested Classes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
CoherenceCacheStrategy.Item | An item of cached data, timestamped with the time it was cached,. | ||||||||||
CoherenceCacheStrategy.Lock | A soft lock which supports concurrent locking, timestamped with the time it was released | ||||||||||
CoherenceCacheStrategy.Lockable |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Add the new item to the cache, checking that no other transaction has
accessed the item.
| |||||||||||
Re-cache the updated state, if and only if there there are
no other concurrent soft locks.
| |||||||||||
Do nothing.
| |||||||||||
Do not return an item whose timestamp is later than the current
transaction timestamp.
| |||||||||||
Do nothing.
| |||||||||||
Stop any other transactions reading or writing this item to/from
the cache.
| |||||||||||
Do not add an item to the cache unless the current transaction
timestamp is later than the timestamp at which the item was
invalidated.
| |||||||||||
Release the soft lock on the item.
| |||||||||||
Do nothing.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
From interface
net.sf.hibernate.cache.CacheConcurrencyStrategy
|
Add the new item to the cache, checking that no other transaction has accessed the item.
CacheException |
---|
Re-cache the updated state, if and only if there there are no other concurrent soft locks. Release our lock.
CacheException |
---|
CacheException |
---|
Do not return an item whose timestamp is later than the current
transaction timestamp. (Otherwise we might compromise repeatable
read unnecessarily.) Do not return an item which is soft-locked.
Always go straight to the database instead.
Note that since reading an item from that cache does not actually
go to the database, it is possible to see a kind of phantom read
due to the underlying row being updated after we have read it
from the cache. This would not be possible in a lock-based
implementation of repeatable read isolation. It is also possible
to overwrite changes made and committed by another transaction
after the current transaction read the item from the cache. This
problem would be caught by the update-time version-checking, if
the data is versioned or timestamped.
CacheException |
---|
Stop any other transactions reading or writing this item to/from the cache. Send them straight to the database instead. (The lock does time out eventually.) This implementation tracks concurrent locks my transactions which simultaneously attempt to write to an item.
CacheException |
---|
Do not add an item to the cache unless the current transaction timestamp is later than the timestamp at which the item was invalidated. (Otherwise, a stale item might be re-added if the database is operating in repeatable read isolation mode.)
CacheException |
---|
Release the soft lock on the item. Other transactions may now re-cache the item (assuming that no other transaction holds a simultaneous lock).
CacheException |
---|
HibernateException |
---|