mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX to HEAD (4.2)
55486: Merged V4.1-BUG-FIX (4.1.7) to HEAD-BUG-FIX (4.2) 54914: Merged DEV to BRANCHES/DEV/V4.1-BUG-FIX: 54811: Unit test for MNT-9462 : Demonstrate deadlock between DictionaryService and MessageService 54899: MNT-9462 : WebContainer threads are deadlocked Relies on MNT-9517 changes as well git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@55775 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2010 Alfresco Software Limited.
|
||||
* Copyright (C) 2005-2013 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
@@ -32,6 +32,7 @@ import junit.framework.TestCase;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.repo.dictionary.DictionaryDAO;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationComponent;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
|
||||
@@ -62,15 +63,9 @@ public class MessageServiceImplTest extends TestCase implements MessageDeployer
|
||||
{
|
||||
private static ApplicationContext applicationContext = ApplicationContextHelper.getApplicationContext();
|
||||
|
||||
private MessageService messageService;
|
||||
private NodeService nodeService;
|
||||
private MutableAuthenticationService authenticationService;
|
||||
private ContentService contentService;
|
||||
|
||||
private static final String BASE_BUNDLE_NAME = "testMessages";
|
||||
private static final String BASE_RESOURCE_CLASSPATH = "org/alfresco/repo/i18n/";
|
||||
|
||||
|
||||
private static final String PARAM_VALUE = "television";
|
||||
private static final String MSG_YES = "msg_yes";
|
||||
private static final String MSG_NO = "msg_no";
|
||||
@@ -82,6 +77,14 @@ public class MessageServiceImplTest extends TestCase implements MessageDeployer
|
||||
private static final String VALUE_FR_NO = "Non";
|
||||
private static final String VALUE_FR_PARAMS = "Que non " + PARAM_VALUE + "?";
|
||||
|
||||
private MessageService messageService;
|
||||
private NodeService nodeService;
|
||||
private MutableAuthenticationService authenticationService;
|
||||
private ContentService contentService;
|
||||
private DictionaryDAO dictionaryDAO;
|
||||
private TransactionService transactionService;
|
||||
private AuthenticationComponent authenticationComponent;
|
||||
|
||||
/**
|
||||
* Test user details
|
||||
*/
|
||||
@@ -92,10 +95,6 @@ public class MessageServiceImplTest extends TestCase implements MessageDeployer
|
||||
*/
|
||||
private StoreRef testStoreRef;
|
||||
|
||||
private TransactionService transactionService;
|
||||
|
||||
private AuthenticationComponent authenticationComponent;
|
||||
|
||||
private UserTransaction testTX;
|
||||
|
||||
|
||||
@@ -114,6 +113,7 @@ public class MessageServiceImplTest extends TestCase implements MessageDeployer
|
||||
contentService = (ContentService) applicationContext.getBean("ContentService");
|
||||
transactionService = (TransactionService) applicationContext.getBean("transactionComponent");
|
||||
authenticationComponent = (AuthenticationComponent) applicationContext.getBean("authenticationComponent");
|
||||
dictionaryDAO = (DictionaryDAO) applicationContext.getBean("dictionaryDAO");
|
||||
|
||||
// Re-set the current locale to be the default
|
||||
Locale.setDefault(Locale.ENGLISH);
|
||||
@@ -427,4 +427,50 @@ public class MessageServiceImplTest extends TestCase implements MessageDeployer
|
||||
assertEquals(VALUE_PARAMS, messageService.getMessage(MSG_PARAMS, Locale.getDefault(), new Object[]{PARAM_VALUE}));
|
||||
}
|
||||
|
||||
/**
|
||||
* See MNT-9462
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public void testDictionaryDAOLock()
|
||||
{
|
||||
class DictionaryDAOThread extends Thread
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
dictionaryDAO.destroy();
|
||||
dictionaryDAO.init();
|
||||
}
|
||||
}
|
||||
class MessageServiceThread extends Thread
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
messageService.destroy();
|
||||
messageService.getMessage(MSG_YES);
|
||||
}
|
||||
}
|
||||
DictionaryDAOThread ddt = new DictionaryDAOThread();
|
||||
MessageServiceThread mst = new MessageServiceThread();
|
||||
ddt.start();
|
||||
mst.start();
|
||||
try
|
||||
{
|
||||
ddt.join(1000);
|
||||
mst.join(1000);
|
||||
}
|
||||
catch (InterruptedException ie)
|
||||
{
|
||||
ddt.interrupt();
|
||||
mst.interrupt();
|
||||
fail("Threads were deadlocked.");
|
||||
}
|
||||
if (ddt.isAlive() || mst.isAlive())
|
||||
{
|
||||
ddt.stop();
|
||||
mst.stop();
|
||||
fail("Threads were deadlocked.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user