[jboss-user] [JBoss Cache Users] - Re: MVCC leading to deadlocks in synchronous replication mod

veklov do-not-reply at jboss.com
Wed Dec 2 09:50:47 EST 2009


As I understand your scenario is not primary use case for JBossCache. People from Hibernate brought up this issue some time ago and as the result the method putForExternalRead was added:

/**
  |     * Under special operating behavior, associates the value with the specified key for a node identified by the Fqn passed in.
  |     * <ul>
  |     * <li> Only goes through if the node specified does not exist; no-op otherwise.</i>
  |     * <li> Force asynchronous mode for replication to prevent any blocking.</li>
  |     * <li> invalidation does not take place. </li>
  |     * <li> 0ms lock timeout to prevent any blocking here either. If the lock is not acquired, this method is a no-op, and swallows the timeout exception.</li>
  |     * <li> Ongoing transactions are suspended before this call, so failures here will not affect any ongoing transactions.</li>
  |     * <li> Errors and exceptions are 'silent' - logged at a much lower level than normal, and this method does not throw exceptions</li>
  |     * </ul>
  |     * This method is for caching data that has an external representation in storage, where, concurrent modification and
  |     * transactions are not a consideration, and failure to put the data in the cache should be treated as a 'suboptimal outcome'
  |     * rather than a 'failing outcome'.
  |     * <p/>
  |     * An example of when this method is useful is when data is read from, for example, a legacy datastore, and is cached before
  |     * returning the data to the caller.  Subsequent calls would prefer to get the data from the cache and if the data doesn't exist
  |     * in the cache, fetch again from the legacy datastore.
  |     * <p/>
  |     * See <a href="http://jira.jboss.com/jira/browse/JBCACHE-848">JBCACHE-848</a> for details around this feature.
  |     * <p/>
  |     *
  |     * @param fqn   <b><i>absolute</i></b> {@link Fqn} to the {@link Node} to be accessed.
  |     * @param key   key with which the specified value is to be associated.
  |     * @param value value to be associated with the specified key.
  |     * @throws IllegalStateException if {@link #getCacheStatus()} would not return {@link org.jboss.cache.CacheStatus#STARTED}.
  |     */
  |    void putForExternalRead(Fqn fqn, K key, V value);
  | 


View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4268556#4268556

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4268556



More information about the jboss-user mailing list