Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)

82289: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud)
      81646: Merged V4.1-BUG-FIX (4.1.10) to V4.2-BUG-FIX (4.2.4)
         81441: Merged DEV to V4.1-BUG-FIX
          81113 : MNT-12145 : BM-0013 Soak test: Exception during generation of feeds org.springframework.dao.DataIntegrityViolationException.
           Added RetryingTransactionHelper (before the job lock is created), which would deal with the exception neatly, and disabled force writable flag.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@83202 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Erik Winlof
2014-09-04 06:30:16 +00:00
parent d9324747d0
commit 7f3dda5c98
2 changed files with 65 additions and 50 deletions

View File

@@ -85,7 +85,7 @@
<!-- Local (non-grid-based) Feed Generator -->
<bean id="feedGenerator" class="org.alfresco.repo.activities.feed.local.LocalFeedGenerator" parent="baseFeedGenerator">
<property name="feedTaskProcessor" ref="feedTaskProcessor"/>
<property name="feedTaskProcessor" ref="FeedTaskProcessor"/>
</bean>
<bean id="feedTaskProcessor" class="org.alfresco.repo.activities.feed.local.LocalFeedTaskProcessor">
@@ -113,6 +113,20 @@
</bean>
<bean id="FeedTaskProcessor" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="target">
<ref bean="feedTaskProcessor"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="checkTxnAdvisor" />
</list>
</property>
</bean>
<bean id="feedNotifier" class="org.alfresco.repo.activities.feed.FeedNotifierImpl">
<property name="personService" ref="PersonService"/>
<property name="nodeService" ref="NodeService"/>

View File

@@ -164,7 +164,17 @@ public abstract class AbstractFeedGenerator implements FeedGenerator
return;
}
//MNT-12145 : BM-0013 Soak test: Exception during generation of feeds org.springframework.dao.DataIntegrityViolationException.
// run one job cycle
RetryingTransactionHelper helper = transactionService.getRetryingTransactionHelper();
helper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
public Void execute() throws Throwable
{
LockCallback lockCallback = new LockCallback();
String lockToken = null;
try
{
@@ -177,19 +187,7 @@ public abstract class AbstractFeedGenerator implements FeedGenerator
logger.trace("Activities feed generator started");
}
// run one job cycle
RetryingTransactionHelper helper = transactionService.getRetryingTransactionHelper();
// respect read-only server
helper.setForceWritable(true);
helper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
{
@Override
public Void execute() throws Throwable
{
generate();
return null;
}
});
if (logger.isTraceEnabled())
{
@@ -220,6 +218,9 @@ public abstract class AbstractFeedGenerator implements FeedGenerator
{
releaseLock(lockCallback, lockToken);
}
return null;
}
}, false, false);
}
protected abstract boolean generate() throws Exception;