Fixed flush mode for queries to get child associations.

This had the side-effect of fixing the ADMLuceneTest that was failing during in-transaction deletions of child associations.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5828 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley 2007-06-01 14:07:04 +00:00
parent 6675ba0e6e
commit dec1de7f34
2 changed files with 1 additions and 30 deletions

View File

@ -32,7 +32,6 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.zip.CRC32;
@ -72,18 +71,13 @@ import org.alfresco.service.namespace.QName;
import org.alfresco.util.GUID;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.FlushMode;
import org.hibernate.LockMode;
import org.hibernate.ObjectDeletedException;
import org.hibernate.Query;
import org.hibernate.ScrollMode;
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.hibernate.exception.LockAcquisitionException;
import org.springframework.dao.ConcurrencyFailureException;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.DeadlockLoserDataAccessException;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
@ -95,7 +89,6 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements NodeDaoService, TransactionalDao
{
private static final String QUERY_GET_ALL_STORES = "store.GetAllStores";
private static final String UPDATE_SET_CHILD_ASSOC_NAME = "node.updateChildAssocName";
private static final String QUERY_GET_PRIMARY_CHILD_NODE_STATUSES = "node.GetPrimaryChildNodeStatuses";
private static final String QUERY_GET_CHILD_ASSOCS = "node.GetChildAssocs";
private static final String QUERY_GET_CHILD_ASSOCS_BY_ALL = "node.GetChildAssocsByAll";
@ -115,12 +108,9 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
/** a uuid identifying this unique instance */
private final String uuid;
/** the number of lock retries against the parent node to ensure child uniqueness */
private int maxLockRetries;
private static TransactionAwareSingleton<Long> serverIdSingleton = new TransactionAwareSingleton<Long>();
private final String ipAddress;
private Random randomWaitTime;
/** used for debugging */
private Set<String> changeTxnIdSet;
@ -131,7 +121,6 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
public HibernateNodeDaoServiceImpl()
{
this.uuid = GUID.generate();
this.maxLockRetries = 20;
try
{
ipAddress = InetAddress.getLocalHost().getHostAddress();
@ -140,7 +129,6 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{
throw new AlfrescoRuntimeException("Failed to get server IP address", e);
}
randomWaitTime = new Random(System.currentTimeMillis());
changeTxnIdSet = new HashSet<String>(0);
}
@ -170,16 +158,6 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
return uuid.hashCode();
}
/**
* Set the maximum number of retries when attempting to get a lock on a parent node
*
* @param maxLockRetries the retry count
*/
public void setMaxLockRetries(int maxLockRetries)
{
this.maxLockRetries = maxLockRetries;
}
/**
* Gets/creates the <b>server</b> instance to use for the life of this instance
*/
@ -718,8 +696,7 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{
Query query = session
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_PRIMARY_CHILD_NODE_STATUSES)
.setLong("parentId", parentNode.getId())
.setFlushMode(FlushMode.MANUAL);
.setLong("parentId", parentNode.getId());
return query.list();
}
};
@ -736,7 +713,6 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{
Query query = session
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOCS)
.setFlushMode(FlushMode.MANUAL)
.setLong("parentId", parentNode.getId());
return query.list();
}
@ -754,7 +730,6 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{
Query query = session
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOC_REFS)
.setFlushMode(FlushMode.MANUAL)
.setLong("parentId", parentNode.getId());
return query.list();
}
@ -774,7 +749,6 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements
{
Query query = session
.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_CHILD_ASSOC_REFS_BY_QNAME)
.setFlushMode(FlushMode.MANUAL)
.setLong("parentId", parentNode.getId())
.setParameter("childAssocQName", assocQName);
return query.list();

View File

@ -50,7 +50,6 @@ import org.alfresco.repo.dictionary.DictionaryDAO;
import org.alfresco.repo.dictionary.DictionaryNamespaceComponent;
import org.alfresco.repo.dictionary.M2Model;
import org.alfresco.repo.dictionary.NamespaceDAOImpl;
import org.alfresco.repo.domain.hibernate.SessionSizeResourceManager;
import org.alfresco.repo.node.BaseNodeServiceTest;
import org.alfresco.repo.search.MLAnalysisMode;
import org.alfresco.repo.search.QueryParameterDefImpl;
@ -1039,8 +1038,6 @@ public class ADMLuceneTest extends TestCase
{
public Object execute() throws Throwable
{
// Disable resource management
SessionSizeResourceManager.setDisableInTransaction();
for (int i = 0; i < 100; i++)
{
HashSet<ChildAssociationRef> refs = new HashSet<ChildAssociationRef>();