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

57242: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3)
      57222: Reverse Merge in attempt to work out which commit causes the two EmbeddedSolrTest test failures in https://bamboo.alfresco.com/bamboo/browse/ALF-ENTERPRISEV42BUGFIX-23
         << was not this one >>
         57116: Merged V4.1-BUG-FIX (4.1.7) to V4.2-BUG-FIX (4.2.1)
            56986: MNT-9829: Merged V4.1.5 (4.1.5.10) to V4.1-BUG-FIX (4.1.7)
               56818: Fix for     MNT-9706  Big amount of alf_acl_change_set entries slowing down massively index times and prevent access to report / summary pages of SOLR
               56848: Fix for     MNT-9706  Big amount of alf_acl_change_set entries slowing down massively index times and prevent access to report / summary pages of SOLR
               - moved to join, count and group by    as having is causing issues.
               56868: Fix for     MNT-9706  Big amount of alf_acl_change_set entries slowing down massively index times and prevent access to report / summary pages of SOLR
               - also protect direct acl fetch with node exists test
               - fix test to use a sensible loop .....


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@61797 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2014-02-11 20:28:17 +00:00
parent a807469fba
commit 3584a3249a
2 changed files with 35 additions and 16 deletions

View File

@@ -36,10 +36,15 @@
select
acs.id as id,
acs.commit_time_ms as commit_time_ms,
count(acl_id) as acl_count
(select
count(acl.id)
from
alf_access_control_list acl
where
acl.acl_change_set = acs.id
) as acl_count
from
alf_acl_change_set acs
join alf_access_control_list acl on (acl.acl_change_set = acs.id and exists (select 1 from alf_node admnode where admnode.acl_id = acl.id))
<where>
<if test="fromCommitTimeInclusive != null">
<![CDATA[acs.commit_time_ms >= #{fromCommitTimeInclusive}]]>
@@ -54,7 +59,6 @@
and <![CDATA[acs.id < #{toIdExclusive}]]>
</if>
</where>
group by acs.commit_time_ms, acs.id
order by acs.commit_time_ms ASC, acs.id ASC
</select>
@@ -65,9 +69,8 @@
from
alf_access_control_list acl
<where>
exists (select 1 from alf_node admnode where admnode.acl_id = acl.id)
<if test="fromIdInclusive != null">
and <![CDATA[acl.id >= #{fromIdInclusive}]]>
<![CDATA[acl.id >= #{fromIdInclusive}]]>
</if>
<if test="ids != null">
and acl.acl_change_set in
@@ -84,11 +87,24 @@
select
txn.id as id,
txn.commit_time_ms as commit_time_ms,
count(case when node.type_qname_id != #{deletedTypeQNameId} then 1 end) as updates,
count(case when node.type_qname_id = #{deletedTypeQNameId} then 1 end) as deletes
(select
count(node.id)
from
alf_node node
where
txn.id = node.transaction_id and
node.type_qname_id != #{deletedTypeQNameId}
) as updates,
(select
count(node.id)
from
alf_node node
where
txn.id = node.transaction_id and
node.type_qname_id = #{deletedTypeQNameId}
) as deletes
from
alf_transaction txn
join alf_node node on (txn.id = node.transaction_id)
<where>
<if test="fromCommitTimeInclusive != null">
<![CDATA[txn.commit_time_ms >= #{fromCommitTimeInclusive}]]>
@@ -103,7 +119,6 @@
and <![CDATA[txn.id < #{toIdExclusive}]]>
</if>
</where>
group by txn.commit_time_ms, txn.id
order by txn.commit_time_ms ASC, txn.id ASC
</select>

View File

@@ -21,7 +21,6 @@ package org.alfresco.repo.solr;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -139,20 +138,25 @@ public class SOLRTrackingComponentTest extends TestCase
{
List<AclChangeSet> cs = solrTrackingComponent.getAclChangeSets(null, null, null, null, 50);
assertTrue("Expected results to be limited in number", cs.size() <= 50);
List<Long> aclChangeSetIds = new ArrayList<Long>(50);
int totalAcls = 0;
for (AclChangeSet aclChangeSet : cs)
{
aclChangeSetIds.add(aclChangeSet.getId());
totalAcls += aclChangeSet.getAclCount();
}
int totalAclsCheck = 0;
for (AclChangeSet aclChangeSet : cs)
Long fromAclId = null;
while (true)
{
List<Acl> acls = solrTrackingComponent.getAcls(Arrays.asList(new Long[]{aclChangeSet.getId()}), null, 200);
assertEquals(aclChangeSet.getAclCount(), acls.size());
totalAclsCheck += acls.size();
List<Acl> acls = solrTrackingComponent.getAcls(aclChangeSetIds, fromAclId, 2);
if (acls.size() == 0)
{
break;
}
totalAclsCheck += acls.size();
fromAclId = acls.get(acls.size() - 1).getId() + 1;
}
// Double check number of ACLs
assertEquals("ACL count should have matched", totalAcls, totalAclsCheck);
}