Can't reproduce the bug but spotted a race condition in UserUsageTrackingComponent that may cause this in rare circumstances. Deal with this by throwing a ConcurrencyFailureException and let the txn retry handler retry the operation.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19862 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Steven Glover
2010-04-15 12:38:19 +00:00
parent 47905d3314
commit f14db280f3
7 changed files with 73 additions and 15 deletions

View File

@@ -564,9 +564,11 @@ public class UserUsageTrackingComponent extends AbstractLifecycleBean
long currentUsage = contentUsageImpl.getUserStoredUsage(personNodeRef);
if (currentUsage != -1)
{
// collapse the usage deltas
currentUsage = contentUsageImpl.getUserUsage(userName);
usageService.deleteDeltas(personNodeRef);
// Collapse the usage deltas
// Calculate and remove deltas in one go to guard against deletion of
// deltas from another transaction that have not been included in the
// calculation
currentUsage = contentUsageImpl.getUserUsage(userName, true);
contentUsageImpl.setUserStoredUsage(personNodeRef, currentUsage);
if (logger.isTraceEnabled())