當前位置: 首頁>>代碼示例>>Java>>正文


Java ConcurrencyFailureException類代碼示例

本文整理匯總了Java中org.springframework.dao.ConcurrencyFailureException的典型用法代碼示例。如果您正苦於以下問題:Java ConcurrencyFailureException類的具體用法?Java ConcurrencyFailureException怎麽用?Java ConcurrencyFailureException使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


ConcurrencyFailureException類屬於org.springframework.dao包,在下文中一共展示了ConcurrencyFailureException類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: doInRetryingTransaction

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
/**
 * To allow for possible 'read committed' behaviour in some databases, where a node that previously existed during a
 * transaction can disappear from existence, we treat InvalidNodeRefExceptions as concurrency conditions.
 */
protected <T2> T2 doInRetryingTransaction(final RetryingTransactionCallback<T2> callback, boolean isReadThrough)
{
    return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<T2>()
    {
        @Override
        public T2 execute() throws Throwable
        {
            try
            {
                return callback.execute();
            }
            catch (InvalidNodeRefException e)
            {
                // Turn InvalidNodeRefExceptions into retryable exceptions.
                throw new ConcurrencyFailureException("Possible cache integrity issue during reindexing", e);
            }

        }
    }, true, isReadThrough);
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:25,代碼來源:AbstractReindexComponent.java

示例2: updateAclMember

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
public void updateAclMember(AclMemberEntity entity)
{
    ParameterCheck.mandatory("entity", entity);
    ParameterCheck.mandatory("entity.id", entity.getId());
    ParameterCheck.mandatory("entity.version", entity.getVersion());
    ParameterCheck.mandatory("entity.aceId", entity.getAceId());
    ParameterCheck.mandatory("entity.aclId", entity.getAclId());
    ParameterCheck.mandatory("entity.pos", entity.getPos());
    
    int updated = updateAclMemberEntity(entity);
    
    if (updated < 1)
    {
        aclEntityCache.removeByKey(entity.getId());
        throw new ConcurrencyFailureException("AclMemberEntity with ID (" + entity.getId() + ") no longer exists or has been updated concurrently");
    }
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:18,代碼來源:AbstractAclCrudDAOImpl.java

示例3: renameAuthority

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
public void renameAuthority(String before, String after)
{
    ParameterCheck.mandatory("before", before);
    ParameterCheck.mandatory("after", after);
    
    AuthorityEntity entity = getAuthorityForUpdate(before);
    
    if (entity != null)
    {
        entity.setAuthority(after);
        entity.setCrc(CrcHelper.getStringCrcPair(after, 32, true, true).getSecond());
        
        int updated = authorityEntityCache.updateValue(entity.getId(), entity);
        if (updated < 1)
        {
            aclEntityCache.removeByKey(entity.getId());
            throw new ConcurrencyFailureException("AuthorityEntity with ID (" + entity.getId() + ") no longer exists or has been updated concurrently");
        }
    }
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:21,代碼來源:AbstractAclCrudDAOImpl.java

示例4: updateAuditApplication

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
@Override
protected AuditApplicationEntity updateAuditApplication(AuditApplicationEntity entity)
{
    AuditApplicationEntity updateEntity = new AuditApplicationEntity();
    updateEntity.setId(entity.getId());
    updateEntity.setVersion(entity.getVersion());
    updateEntity.incrementVersion();
    updateEntity.setApplicationNameId(entity.getApplicationNameId());
    updateEntity.setAuditModelId(entity.getAuditModelId());
    updateEntity.setDisabledPathsId(entity.getDisabledPathsId());
    
    int updated = template.update(UPDATE_APPLICATION, updateEntity);
    if (updated != 1)
    {
        // unexpected number of rows affected
        throw new ConcurrencyFailureException("Incorrect number of rows affected for updateAuditApplication: " + updateEntity + ": expected 1, actual " + updated);
    }
    
    // Done
    return updateEntity;
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:22,代碼來源:AuditDAOImpl.java

示例5: getTotalDeltaSize

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
public long getTotalDeltaSize(NodeRef nodeRef, boolean removeDeltas)
{
    long nodeId = getNodeIdNotNull(nodeRef);
    UsageDeltaEntity entity = selectTotalUsageDeltaSize(nodeId);
    Long totalSize = entity.getDeltaSize();
    // Remove the deltas, making sure that the correct number are removed
    if (removeDeltas)
    {
        int deleted = deleteUsageDeltaEntitiesByNodeId(nodeId);
        if (entity.getDeltaCount() != null && entity.getDeltaCount().intValue() != deleted)
        {
            throw new ConcurrencyFailureException(
                    "The number of usage deltas was " + entity.getDeltaCount() + " but only " + deleted + " were deleted.");
        }
    }
    return (totalSize != null ? totalSize : 0L);
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:18,代碼來源:AbstractUsageDAOImpl.java

示例6: updateNamespace

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
public void updateNamespace(String oldNamespaceUri, String newNamespaceUri)
{
    ParameterCheck.mandatory("newNamespaceUri", newNamespaceUri);

    Pair<Long, String> oldEntityPair = getNamespace(oldNamespaceUri);   // incl. null check
    if (oldEntityPair == null)
    {
        throw new DataIntegrityViolationException(
                "Cannot update namespace as it doesn't exist: " + oldNamespaceUri);
    }
    // Find the value
    int updated = namespaceCache.updateValue(oldEntityPair.getFirst(), newNamespaceUri);
    if (updated != 1)
    {
        throw new ConcurrencyFailureException(
                "Incorrect update count: \n" +
                "   Namespace:    " + oldNamespaceUri + "\n" +
                "   Rows Updated: " + updated);
    }
    // All the QNames need to be dumped
    qnameCache.clear();
    // Done
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:24,代碼來源:AbstractQNameDAOImpl.java

示例7: deleteQName

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
@Override
public void deleteQName(QName qname)
{
    if (qname == null)
    {
        throw new IllegalArgumentException("QName cannot be null");
    }
    // See if the QName exists
    Pair<Long, QName> qnamePair = qnameCache.getByValue(qname);
    if (qnamePair == null)
    {
        throw new IllegalArgumentException("Cannot delete QName.  QName " + qname + " does not exist");
    }
    // Delete
    Long qnameId = qnamePair.getFirst();
    int deleted = qnameCache.deleteByKey(qnameId);
    if (deleted != 1)
    {
        throw new ConcurrencyFailureException("Failed to delete QName entity " + qnameId);
    }
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:22,代碼來源:AbstractQNameDAOImpl.java

示例8: updateLock

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
@Override
protected LockEntity updateLock(LockEntity lockEntity, String lockToken, long timeToLive)
{
    LockEntity updateLockEntity = new LockEntity();
    updateLockEntity.setId(lockEntity.getId());
    updateLockEntity.setVersion(lockEntity.getVersion());
    updateLockEntity.incrementVersion();            // Increment the version number
    updateLockEntity.setSharedResourceId(lockEntity.getSharedResourceId());
    updateLockEntity.setExclusiveResourceId(lockEntity.getExclusiveResourceId());
    updateLockEntity.setLockToken(lockToken == null ? null : lockToken.toLowerCase());
    long now = (timeToLive > 0) ? System.currentTimeMillis() : 0L;
    long exp = (timeToLive > 0) ? (now + timeToLive) : 0L;
    updateLockEntity.setStartTime(new Long(now));
    updateLockEntity.setExpiryTime(new Long(exp));
    
    int updated = template.update(UPDATE_LOCK, updateLockEntity);
    if (updated != 1)
    {
        // unexpected number of rows affected
        throw new ConcurrencyFailureException("Incorrect number of rows affected for updateLock: " + updateLockEntity + ": expected 1, actual " + updated);
    }
    
    // Done
    return updateLockEntity;
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:26,代碼來源:LockDAOImpl.java

示例9: updateContentData

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
@Override
public void updateContentData(Long id, ContentData contentData)
{
    if (id == null)
    {
        throw new IllegalArgumentException("Cannot look up ContentData by null ID.");
    }
    if (contentData == null)
    {
        throw new IllegalArgumentException("Cannot update ContentData with a null.");
    }
    contentData = sanitizeMimetype(contentData);
    int updated = contentDataCache.updateValue(id, contentData);
    if (updated < 1)
    {
        throw new ConcurrencyFailureException("ContentData with ID " + id + " not updated");
    }
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:19,代碼來源:AbstractContentDataDAOImpl.java

示例10: testSuccessWithRetry

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
/**
 * Check that the retries happening for simple concurrency exceptions
 */
public void testSuccessWithRetry()
{
    RetryingTransactionCallback<Long> callback = new RetryingTransactionCallback<Long>()
    {
        private int maxCalls = 3;
        private int callCount = 0;
        public Long execute() throws Throwable
        {
            callCount++;
            Long checkValue = incrementCheckValue();
            if (callCount == maxCalls)
            {
                return checkValue;
            }
            else
            {
                throw new ConcurrencyFailureException("Testing");
            }
        }
    };
    long txnValue = txnHelper.doInTransaction(callback);
    assertEquals("Only one increment expected", 1, txnValue);
}
 
開發者ID:Alfresco,項目名稱:alfresco-repository,代碼行數:27,代碼來源:RetryingTransactionHelperTest.java

示例11: doTranslate

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
@Override
protected DataAccessException doTranslate(String task, String sql, SQLException ex) {
	String sqlState = getSqlState(ex);
	if (sqlState != null && sqlState.length() >= 2) {
		String classCode = sqlState.substring(0, 2);
		if (logger.isDebugEnabled()) {
			logger.debug("Extracted SQL state class '" + classCode + "' from value '" + sqlState + "'");
		}
		if (BAD_SQL_GRAMMAR_CODES.contains(classCode)) {
			return new BadSqlGrammarException(task, sql, ex);
		}
		else if (DATA_INTEGRITY_VIOLATION_CODES.contains(classCode)) {
			return new DataIntegrityViolationException(buildMessage(task, sql, ex), ex);
		}
		else if (DATA_ACCESS_RESOURCE_FAILURE_CODES.contains(classCode)) {
			return new DataAccessResourceFailureException(buildMessage(task, sql, ex), ex);
		}
		else if (TRANSIENT_DATA_ACCESS_RESOURCE_CODES.contains(classCode)) {
			return new TransientDataAccessResourceException(buildMessage(task, sql, ex), ex);
		}
		else if (CONCURRENCY_FAILURE_CODES.contains(classCode)) {
			return new ConcurrencyFailureException(buildMessage(task, sql, ex), ex);
		}
	}
	return null;
}
 
開發者ID:lamsfoundation,項目名稱:lams,代碼行數:27,代碼來源:SQLStateSQLExceptionTranslator.java

示例12: updateContent

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
/**
 * Update an existing content item.
 *
 * @param content
 *            content item to update
 * @return updated content item
 */
public ContentItem updateContent(ContentItem content) {
    if (content == null) {
        throw new IllegalArgumentException("content cannot be null");
    }

    if(THROW_CONCURRENT_EXCEPTION) {
        throw new ConcurrencyFailureException("fail!");
    }

    Item stored = getStorage().getItemByUid(content.getUid());
    if (stored != null && stored != content) {
        throw new UidInUseException(content.getUid(), "Uid " + content.getUid() + " already in use");
    }
    
    getStorage().updateItem((Item) content);

    return content;
}
 
開發者ID:1and1,項目名稱:cosmo,代碼行數:26,代碼來源:MockContentDao.java

示例13: pauseRollout

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
@Override
@Transactional
@Retryable(include = {
        ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY))
public void pauseRollout(final Long rolloutId) {
    final JpaRollout rollout = getRolloutAndThrowExceptionIfNotFound(rolloutId);
    if (!RolloutStatus.RUNNING.equals(rollout.getStatus())) {
        throw new RolloutIllegalStateException("Rollout can only be paused in state running but current state is "
                + rollout.getStatus().name().toLowerCase());
    }
    // setting the complete rollout only in paused state. This is sufficient
    // due the currently running groups will be completed and new groups are
    // not started until rollout goes back to running state again. The
    // periodically check for running rollouts will skip rollouts in pause
    // state.
    rollout.setStatus(RolloutStatus.PAUSED);
    rolloutRepository.save(rollout);
}
 
開發者ID:eclipse,項目名稱:hawkbit,代碼行數:19,代碼來源:JpaRolloutManagement.java

示例14: delete

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
@Override
@Transactional
@Retryable(include = {
        ConcurrencyFailureException.class }, maxAttempts = Constants.TX_RT_MAX, backoff = @Backoff(delay = Constants.TX_RT_DELAY))
public void delete(final Long rolloutId) {
    final JpaRollout jpaRollout = rolloutRepository.findOne(rolloutId);

    if (jpaRollout == null) {
        throw new EntityNotFoundException(Rollout.class, rolloutId);
    }

    if (RolloutStatus.DELETING.equals(jpaRollout.getStatus())) {
        return;
    }

    jpaRollout.setStatus(RolloutStatus.DELETING);
    rolloutRepository.save(jpaRollout);
}
 
開發者ID:eclipse,項目名稱:hawkbit,代碼行數:19,代碼來源:JpaRolloutManagement.java

示例15: _getOrphanMessagesWithRetries

import org.springframework.dao.ConcurrencyFailureException; //導入依賴的package包/類
/**
 * Get all orphan messages (messages that were left in ephemeral storage for
 * a long time), retry if deadlock.
 * 
 * <p>
 * Note: http://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html
 * </p>
 * <p>
 * InnoDB uses automatic row-level locking. You can get deadlocks even in
 * the case of transactions that just insert or delete a single row. That is
 * because these operations are not really "atomic"; they automatically set
 * locks on the (possibly several) index records of the row inserted or
 * deleted.
 * </p>
 * 
 * @param thresholdTimestampMs
 * @param conn
 * @param numRetries
 * @param maxRetries
 * @return
 * @since 0.2.0
 */
protected Collection<? extends IQueueMessage<ID, DATA>> _getOrphanMessagesWithRetries(
        long thresholdTimestampMs, Connection conn, int numRetries, int maxRetries) {
    try {
        jdbcHelper.startTransaction(conn);
        conn.setTransactionIsolation(transactionIsolationLevel);
        Collection<? extends IQueueMessage<ID, DATA>> msgs = getOrphanFromEphemeralStorage(conn,
                thresholdTimestampMs);
        jdbcHelper.commitTransaction(conn);
        return msgs;
    } catch (DaoException de) {
        if (de.getCause() instanceof ConcurrencyFailureException) {
            jdbcHelper.rollbackTransaction(conn);
            if (numRetries > maxRetries) {
                throw new QueueException(de);
            } else {
                return _getOrphanMessagesWithRetries(thresholdTimestampMs, conn, numRetries + 1,
                        maxRetries);
            }
        }
        throw de;
    } catch (Exception e) {
        jdbcHelper.rollbackTransaction(conn);
        throw e instanceof QueueException ? (QueueException) e : new QueueException(e);
    }
}
 
開發者ID:DDTH,項目名稱:ddth-queue,代碼行數:48,代碼來源:JdbcQueue.java


注:本文中的org.springframework.dao.ConcurrencyFailureException類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。