diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/solr-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/solr-common-SqlMap.xml
index a8815b2f0a..692528098b 100644
--- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/solr-common-SqlMap.xml
+++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/solr-common-SqlMap.xml
@@ -50,13 +50,13 @@
= #{fromCommitTimeInclusive}]]>
- = #{fromIdInclusive}]]>
+ and = #{fromIdInclusive}]]>
-
+ and
-
+ and
order by acs.commit_time_ms ASC, acs.id ASC
@@ -110,13 +110,13 @@
= #{fromCommitTimeInclusive}]]>
- = #{fromIdInclusive}]]>
+ and = #{fromIdInclusive}]]>
-
+ and
-
+ and
order by txn.commit_time_ms ASC, txn.id ASC
@@ -153,10 +153,10 @@
- = #{fromNodeId}]]>
+ and = #{fromNodeId}]]>
-
+ and
and store.protocol = #{storeProtocol}
diff --git a/source/java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java b/source/java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java
index 6210a4dbe6..f8e670f127 100644
--- a/source/java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java
+++ b/source/java/org/alfresco/repo/solr/SOLRTrackingComponentTest.java
@@ -110,6 +110,22 @@ public class SOLRTrackingComponentTest extends TestCase
rootNodeRef = nodeService.getRootNode(storeRef);
}
+ public void testAclChnageSetLimits()
+ {
+ List aclChangeSets = solrTrackingComponent.getAclChangeSets(null, null, null, null, 50);
+
+ // First
+ Long first = aclChangeSets.get(0).getId();
+ Long firstTime = aclChangeSets.get(1).getId();
+ List testSets = solrTrackingComponent.getAclChangeSets(first, null, first, null, 50);
+ assertEquals(0, testSets.size());
+ testSets = solrTrackingComponent.getAclChangeSets(first, firstTime, first+1, firstTime, 50);
+ assertEquals(0, testSets.size());
+ testSets = solrTrackingComponent.getAclChangeSets(first, firstTime, first+1, firstTime+1, 50);
+ assertEquals(0, testSets.size());
+
+ }
+
public void testGetAcls_Simple()
{
List cs = solrTrackingComponent.getAclChangeSets(null, null, null, null, 50);
@@ -148,16 +164,88 @@ public class SOLRTrackingComponentTest extends TestCase
int[] updates = new int[] {1, 1};
int[] deletes = new int[] {0, 1};
- List txnIds = checkTransactions(txns, createdTransactions, updates, deletes);
+ List checkedTransactions = checkTransactions(txns, createdTransactions, updates, deletes);
NodeParameters nodeParameters = new NodeParameters();
- nodeParameters.setTransactionIds(txnIds);
+ nodeParameters.setTransactionIds(getTransactionIds(checkedTransactions));
getNodes(nodeParameters, st);
NodeMetaDataParameters nodeMetaDataParams = new NodeMetaDataParameters();
nodeMetaDataParams.setNodeIds(st.getNodeIds());
getNodeMetaData(nodeMetaDataParams, null, st);
}
+
+ /**
+ * @param checkedTransactions
+ * @return
+ */
+ private List getTransactionIds(List checkedTransactions)
+ {
+ ArrayList txIds = new ArrayList(checkedTransactions.size());
+ for(Transaction txn : checkedTransactions)
+ {
+ txIds.add(txn.getId());
+ }
+ return txIds;
+ }
+
+ public void testGetTransactionLimits()
+ {
+ long startTime = System.currentTimeMillis();
+
+ SOLRTest st = new SOLRTest3(txnHelper, fileFolderService, nodeDAO, nodeService, dictionaryService, rootNodeRef, "testGetNodeMetaData", true, true);
+ List createdTransactions = st.buildTransactions();
+
+ // All
+
+ List txns = solrTrackingComponent.getTransactions(null, startTime, null, null, 50);
+
+ int[] updates = new int[] {1, 1};
+ int[] deletes = new int[] {0, 1};
+ List checkedTransactions = checkTransactions(txns, createdTransactions, updates, deletes);
+
+ Long first = checkedTransactions.get(0).getId();
+ Long firstTime = checkedTransactions.get(0).getCommitTimeMs();
+ Long last = checkedTransactions.get(1).getId();
+ Long lastTime = checkedTransactions.get(1).getCommitTimeMs();
+
+ // First
+
+ txns = solrTrackingComponent.getTransactions(first, null, first, null, 50);
+ assertEquals(0, txns.size());
+
+ txns = solrTrackingComponent.getTransactions(first, null, first+1, null, 50);
+ updates = new int[] {1};
+ deletes = new int[] {0};
+ List createdTransactionFirst = new ArrayList(1);
+ createdTransactionFirst.add(createdTransactions.get(0));
+ checkTransactions(txns, createdTransactionFirst, updates, deletes);
+
+ txns = solrTrackingComponent.getTransactions(first, firstTime, first+1, firstTime+1, 50);
+ checkTransactions(txns, createdTransactionFirst, updates, deletes);
+
+ txns = solrTrackingComponent.getTransactions(first, firstTime-1, first+1, firstTime, 50);
+ assertEquals(0, txns.size());
+
+ // Last
+
+ txns = solrTrackingComponent.getTransactions(last, null, last, null, 50);
+ assertEquals(0, txns.size());
+
+ txns = solrTrackingComponent.getTransactions(last, null, last+1, null, 50);
+ updates = new int[] {1};
+ deletes = new int[] {1};
+ List createdTransactionLast = new ArrayList(1);
+ createdTransactionLast.add(createdTransactions.get(1));
+ checkTransactions(txns, createdTransactionLast, updates, deletes);
+
+
+ txns = solrTrackingComponent.getTransactions(last, lastTime, last+1, lastTime+1, 50);
+ checkTransactions(txns, createdTransactionLast, updates, deletes);
+
+ txns = solrTrackingComponent.getTransactions(last, lastTime-1, last+1, lastTime, 50);
+ assertEquals(0, txns.size());
+ }
public void testGetNodeMetaDataExludesResidualProperties()
{
@@ -170,10 +258,10 @@ public class SOLRTrackingComponentTest extends TestCase
int[] updates = new int[] {2};
int[] deletes = new int[] {0};
- List txnIds = checkTransactions(txns, createdTransactions, updates, deletes);
+ List checkedTransactions = checkTransactions(txns, createdTransactions, updates, deletes);
NodeParameters nodeParameters = new NodeParameters();
- nodeParameters.setTransactionIds(txnIds);
+ nodeParameters.setTransactionIds(getTransactionIds(checkedTransactions));
getNodes(nodeParameters, st);
@@ -194,10 +282,10 @@ public class SOLRTrackingComponentTest extends TestCase
int[] updates = new int[] {100};
int[] deletes = new int[] {0};
- List txnIds = checkTransactions(txns, createdTransactions, updates, deletes);
+ List checkedTransactions = checkTransactions(txns, createdTransactions, updates, deletes);
NodeParameters nodeParameters = new NodeParameters();
- nodeParameters.setTransactionIds(txnIds);
+ nodeParameters.setTransactionIds(getTransactionIds(checkedTransactions));
getNodes(nodeParameters, st);
// assertEquals("Unxpected number of nodes", 3, nodeQueryCallback.getSuccessCount());
@@ -223,10 +311,10 @@ public class SOLRTrackingComponentTest extends TestCase
int[] updates = new int[] {2001};
int[] deletes = new int[] {0};
- List txnIds = checkTransactions(txns, createdTransactions, updates, deletes);
+ List checkedTransactions = checkTransactions(txns, createdTransactions, updates, deletes);
NodeParameters nodeParameters = new NodeParameters();
- nodeParameters.setTransactionIds(txnIds);
+ nodeParameters.setTransactionIds(getTransactionIds(checkedTransactions));
getNodes(nodeParameters, st);
// make sure caches are warm - time last call
@@ -280,10 +368,10 @@ public class SOLRTrackingComponentTest extends TestCase
int[] updates = new int[] {2001};
int[] deletes = new int[] {0};
- List txnIds = checkTransactions(txns, createdTransactions, updates, deletes);
+ List checkedTransactions = checkTransactions(txns, createdTransactions, updates, deletes);
NodeParameters nodeParameters = new NodeParameters();
- nodeParameters.setTransactionIds(txnIds);
+ nodeParameters.setTransactionIds(getTransactionIds(checkedTransactions));
getNodes(nodeParameters, st);
// clear out node caches
@@ -310,10 +398,10 @@ public class SOLRTrackingComponentTest extends TestCase
int[] updates = new int[] {11};
int[] deletes = new int[] {0};
- List txnIds = checkTransactions(txns, createdTransactions, updates, deletes);
+ List checkedTransactions = checkTransactions(txns, createdTransactions, updates, deletes);
NodeParameters nodeParameters = new NodeParameters();
- nodeParameters.setTransactionIds(txnIds);
+ nodeParameters.setTransactionIds(getTransactionIds(checkedTransactions));
getNodes(nodeParameters, st);
NodeMetaDataParameters nodeMetaDataParams = new NodeMetaDataParameters();
@@ -332,10 +420,10 @@ public class SOLRTrackingComponentTest extends TestCase
int[] updates = new int[] {1, 1};
int[] deletes = new int[] {0, 1};
- List txnIds = checkTransactions(txns, createdTransactions, updates, deletes);
+ List checkedTransactions = checkTransactions(txns, createdTransactions, updates, deletes);
NodeParameters nodeParameters = new NodeParameters();
- nodeParameters.setTransactionIds(txnIds);
+ nodeParameters.setTransactionIds(getTransactionIds(checkedTransactions));
getNodes(nodeParameters, st);
NodeMetaDataParameters nodeMetaDataParams = new NodeMetaDataParameters();
@@ -548,7 +636,7 @@ public class SOLRTrackingComponentTest extends TestCase
}
}
- private List checkTransactions(List txns, List createdTransaction, int[] updates, int[] deletes)
+ private List checkTransactions(List txns, List createdTransaction, int[] updates, int[] deletes)
{
ArrayList matchedTransactions = new ArrayList();
HashSet toMatch = new HashSet();
@@ -566,18 +654,15 @@ public class SOLRTrackingComponentTest extends TestCase
assertEquals("Number of transactions is incorrect", createdTransaction.size(), matchedTransactions.size());
- List txnIds = new ArrayList(matchedTransactions.size());
int i = 0;
for(Transaction txn : matchedTransactions)
{
assertEquals("Number of deletes is incorrect", deletes[i], txn.getDeletes());
assertEquals("Number of updates is incorrect", updates[i], txn.getUpdates());
i++;
-
- txnIds.add(txn.getId());
}
- return txnIds;
+ return matchedTransactions;
}
private void getNodes(NodeParameters nodeParameters, SOLRTest bt)