From 16bd8c02dcd18ab8c6c926da966a23cd55dffd08 Mon Sep 17 00:00:00 2001 From: Tom Page Date: Tue, 9 Apr 2019 11:59:01 +0100 Subject: [PATCH 01/37] SEARCH-1513 ADRs for combining the search codebases. --- .../decisions/0003-combined-codebase.md | 46 +++++++++++++++++++ .../decisions/0004-community-mirror.md | 36 +++++++++++++++ .../0005-merge-tests-and-production-code.md | 25 ++++++++++ 3 files changed, 107 insertions(+) create mode 100644 search-services/alfresco-search/doc/architecture/decisions/0003-combined-codebase.md create mode 100644 search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md create mode 100644 search-services/alfresco-search/doc/architecture/decisions/0005-merge-tests-and-production-code.md diff --git a/search-services/alfresco-search/doc/architecture/decisions/0003-combined-codebase.md b/search-services/alfresco-search/doc/architecture/decisions/0003-combined-codebase.md new file mode 100644 index 000000000..6f7bc45be --- /dev/null +++ b/search-services/alfresco-search/doc/architecture/decisions/0003-combined-codebase.md @@ -0,0 +1,46 @@ +# 3. Combined Codebase + +Date: 09/04/2019 + +## Status + +Approved + +## Context + +Historically Alfresco has had a bad experience of having a monolithic codebase in SVN. The main issue with this was the +inability to easily work on feature branches, resulting in frequent conflicting changes. To make matters worse this was +seen as hard to move to git, since GitHub has/had a maximum limit on repository size and there were several large +binary artifacts stored in the Alfresco history [[1]]. + +More recently the Alfresco codebase has been split into a large number of small git repositories [[2]]. + +This proposal is to merge the various git repositories together. By doing this we aim to: + +1. Remove the effort of creating releases of library projects. +1. Allow tests to be written on the same branch (in the same repository) as the production code (i.e. facilitate TDD). +1. Make it easier for everyone (especially people outside the team and new starters) to find the 'right bit' of code. + +[1]: https://community.alfresco.com/community/ecm/blog/2015/04/01/so-when-is-alfresco-moving-to-github + +[2]: https://ts.alfresco.com/share/proxy/alfresco/api/node/content/versionStore/version2Store/a0c2492f-6354-4b98-adfc-e63d5c2209f5/SearchCodeBase.png + +## Decision + +We will merge the search-related repositories together and preserve their history. We will not attempt to merge code +that other teams also need (for example the TAS test utilities or the alfresco-data-model projects). + +## Consequences + +An epic has been raised containing the next steps [[3]]. Broadly speaking these are: + +1. Merge the alfresco-solr-client library with the SearchServices repository. +1. Merge the insight-engine, insight-jdbc and insight-zeppelin repositories. + 1. A consequence of this is that future releases of these artifacts will share version numbers. +1. Put all the end-to-end tests in a single testing project. +1. Merge the (public) SearchServices code into the (private) InsightEngine repository and set up a mirror so the +community code is still publicly editable. +1. Merge the tests with the production code. +1. Merge the build scripts with the production code. + +[3]: https://issues.alfresco.com/jira/browse/SEARCH-1393 diff --git a/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md b/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md new file mode 100644 index 000000000..c709c72e1 --- /dev/null +++ b/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md @@ -0,0 +1,36 @@ +# 4. Community Mirror + +Date: 09/04/2019 + +## Status + +Proposed + +## Context + +In [ADR 3: "Combined Codebase"](0003-combined-codebase.md) we decided to merge the Search Services and Insight Engine +repositories. Since we want to enable the community to submit pull requests to the Search Services project we need a +way to keep this code up to date on GitHub. + +## Decision + +We will mirror the alfresco-search-parent submodule of `master` along with all branches starting with `release/` to a +branch with the same name on GitHub. We will include this command as part of our build to do this: + +```git subtree push -P alfresco-search-parent out $targetBranch``` + +## Consequences + +A ticket has been raised to track this [[1]]. A script has been written to do the initial codebase merge and +mirroring [[2]]. + +We will rewrite the whole history of the SearchServices repository using the mirroring command (the only change will be +the commit ids). + +Any changes within a module called alfresco-search-parent will be mirrored. Any changes outside this will not be +mirrored. + +!!! TODO: Check if the community can build the submodule without access to the parent pom file !!! + +[1]: https://issues.alfresco.com/jira/browse/SEARCH-1397 +[2]: https://git.alfresco.com/search_discovery/combinerScript/blob/master/combineSearch.sh diff --git a/search-services/alfresco-search/doc/architecture/decisions/0005-merge-tests-and-production-code.md b/search-services/alfresco-search/doc/architecture/decisions/0005-merge-tests-and-production-code.md new file mode 100644 index 000000000..cb4191f10 --- /dev/null +++ b/search-services/alfresco-search/doc/architecture/decisions/0005-merge-tests-and-production-code.md @@ -0,0 +1,25 @@ +# 5. Merge Tests And Production Code + +Date: 09/04/2019 + +## Status + +Proposed + +## Context + +In [ADR 3: "Combined Codebase"](0003-combined-codebase.md) we decided to merge the production and end-to-end test +repositories. In [ADR 4: "Community Mirror"](0004-community-mirror.md) we discuss setting up a mirror for code within a +particular submodule. + +## Decision + +We will separate the end-to-end test code in half so that any code solely related to Insight Engine won't be mirrored. + +We will remove the existing test groups for the different versions of Search Services and Insight Engine, and instead +delete any tests from branches where they should not be run. + +## Consequences + +It will be possible to include production code changes along with all required test changes in the same merge request. +It will be easy to get new tests running before production code is written without causing other branches to fail. From 212dbea68bfdf6937d2416709ae7fb364ef08948 Mon Sep 17 00:00:00 2001 From: Tom Page Date: Thu, 11 Apr 2019 15:58:59 +0100 Subject: [PATCH 02/37] SEARCH-1513 Update mirroring command to ensure we can build from GitHub. --- .../decisions/0004-community-mirror.md | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md b/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md index c709c72e1..ee0d39fdc 100644 --- a/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md +++ b/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md @@ -14,10 +14,18 @@ way to keep this code up to date on GitHub. ## Decision -We will mirror the alfresco-search-parent submodule of `master` along with all branches starting with `release/` to a -branch with the same name on GitHub. We will include this command as part of our build to do this: +We will mirror `master` and all branches starting with `release/` to a branch with the same name on GitHub. We will +exclude the alfresco-insight-engine-parent directory. We will include these commands as part of our build to do this: -```git subtree push -P alfresco-search-parent out $targetBranch``` +``` +# This avoids making changes to the original branch. +get checkout -b tempBranch +# This strips all enterprise changes (in a reproducible way) and pushes any updates to the mirror. +git filter-branch -f --prune-empty --index-filter 'git rm -r --cached --ignore-unmatch alfresco-insight-engine-parent' +git push out HEAD:$branch +# This resets us back to where we were before the filtering. +git checkout $branch +``` ## Consequences @@ -27,10 +35,10 @@ mirroring [[2]]. We will rewrite the whole history of the SearchServices repository using the mirroring command (the only change will be the commit ids). -Any changes within a module called alfresco-search-parent will be mirrored. Any changes outside this will not be -mirrored. +All changes except those within the module called alfresco-insight-engine-parent will be mirrored. -!!! TODO: Check if the community can build the submodule without access to the parent pom file !!! +The root pom file in the community project will point to the alfresco-insight-engine-parent pom file, so community users +will have to build from within the alfresco-search-parent directory. [1]: https://issues.alfresco.com/jira/browse/SEARCH-1397 [2]: https://git.alfresco.com/search_discovery/combinerScript/blob/master/combineSearch.sh From 636815638468a96b3d75fccfdca8a11045e3654e Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Mon, 15 Apr 2019 14:58:19 +0200 Subject: [PATCH 03/37] [SEARXCH-1490] removed canUpdate in indexNonShardCascade method. This is not needed for correctness but creates problems for cross sharding cascading. --- .../main/java/org/alfresco/solr/SolrInformationServer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java index 1a2f086a5..4232ea1f8 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -2656,7 +2656,7 @@ public class SolrInformationServer implements InformationServer private void indexNonShardCascade(NodeMetaData nodeMetaData) throws IOException { - canUpdate(); + UpdateRequestProcessor processor = null; try (SolrQueryRequest request = newSolrQueryRequest()) { @@ -2668,7 +2668,7 @@ public class SolrInformationServer implements InformationServer SolrInputDocument input = new SolrInputDocument(); input.addField(FIELD_SOLR4_ID, AlfrescoSolrDataModel.getNodeDocumentId(nodeMetaData.getTenantDomain(), nodeMetaData.getAclId(), nodeMetaData.getId())); input.addField(FIELD_VERSION, 0); - input.addField(fieldInstance.getField(), stringPropertyValue.toString()); + input.addField(fieldInstance.getField(), stringPropertyValue.getValue()); cmd.solrDoc = input; processor.processAdd(cmd); From 3ddb6a014382a38033b9b343f20cded20f7822a8 Mon Sep 17 00:00:00 2001 From: agazzarini Date: Mon, 15 Apr 2019 22:14:20 +0200 Subject: [PATCH 04/37] [MNT-20449] removed useless schema-fingerprint.xml from test suite --- .../collection1/conf/schema-fingerprint.xml | 769 ------------------ 1 file changed, 769 deletions(-) delete mode 100644 search-services/alfresco-search/src/test/resources/test-files/collection1/conf/schema-fingerprint.xml diff --git a/search-services/alfresco-search/src/test/resources/test-files/collection1/conf/schema-fingerprint.xml b/search-services/alfresco-search/src/test/resources/test-files/collection1/conf/schema-fingerprint.xml deleted file mode 100644 index 8befa0480..000000000 --- a/search-services/alfresco-search/src/test/resources/test-files/collection1/conf/schema-fingerprint.xml +++ /dev/null @@ -1,769 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - From caba437cf020225c2692c2b683cc8083a199d58a Mon Sep 17 00:00:00 2001 From: agazzarini Date: Tue, 16 Apr 2019 15:11:58 +0200 Subject: [PATCH 05/37] [MNT-20449] Fingerprint testCase revisited + additional test method for this MNT --- .../query/AlfrescoSolrFingerprintTest.java | 490 ++++++++++-------- 1 file changed, 268 insertions(+), 222 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/AlfrescoSolrFingerprintTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/AlfrescoSolrFingerprintTest.java index 01fde6786..96e1285c0 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/AlfrescoSolrFingerprintTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/AlfrescoSolrFingerprintTest.java @@ -19,50 +19,75 @@ package org.alfresco.solr.query; +import org.alfresco.model.ContentModel; import org.alfresco.repo.search.adaptor.lucene.QueryConstants; import org.alfresco.solr.AbstractAlfrescoSolrTests; -import org.alfresco.solr.client.*; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import org.alfresco.solr.client.Acl; +import org.alfresco.solr.client.AclChangeSet; +import org.alfresco.solr.client.AclReaders; +import org.alfresco.solr.client.Node; +import org.alfresco.solr.client.NodeMetaData; +import org.alfresco.solr.client.SOLRAPIQueueClient; +import org.alfresco.solr.client.StringPropertyValue; +import org.alfresco.solr.client.Transaction; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.LegacyNumericRangeQuery; import org.apache.lucene.search.TermQuery; -import org.apache.lucene.util.LuceneTestCase; import org.apache.solr.common.params.ModifiableSolrParams; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import java.util.ArrayList; import java.util.List; import java.util.Random; +import java.util.stream.Collectors; +import static java.util.Arrays.asList; +import static java.util.Arrays.stream; +import static java.util.Collections.singletonList; +import static java.util.stream.IntStream.range; import static org.alfresco.solr.AlfrescoSolrUtils.*; -@LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"}) public class AlfrescoSolrFingerprintTest extends AbstractAlfrescoSolrTests { - private static Log logger = LogFactory.getLog(AlfrescoSolrFingerprintTest.class); private static long MAX_WAIT_TIME = 80000; + @BeforeClass public static void beforeClass() throws Exception { - initAlfrescoCore("schema-fingerprint.xml"); + initAlfrescoCore("schema.xml"); } + private Acl acl; + @Before - public void setUp() throws Exception { - // if you override setUp or tearDown, you better callf - // the super classes version - //clearIndex(); - //assertU(commit()); + public void prepare() throws Exception + { + AclChangeSet aclChangeSet = getAclChangeSet(1); + acl = getAcl(aclChangeSet); + Acl acl2 = getAcl(aclChangeSet); + + AclReaders aclReaders = getAclReaders(aclChangeSet, acl, singletonList("joel"), singletonList("phil"), null); + AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, singletonList("jim"), singletonList("phil"), null); + + indexAclChangeSet(aclChangeSet, + asList(acl, acl2), + asList(aclReaders, aclReaders2)); + + // Check for the ACL state stamp. + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!ACLTX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_ACLTXID, aclChangeSet.getId(), aclChangeSet.getId() + 1, true, false), BooleanClause.Occur.MUST)); + BooleanQuery waitForQuery = builder.build(); + waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); } @After - public void clearQueue() throws Exception { + public void clearQueue() + { SOLRAPIQueueClient.nodeMetaDataMap.clear(); SOLRAPIQueueClient.transactionQueue.clear(); SOLRAPIQueueClient.aclChangeSetQueue.clear(); @@ -70,234 +95,255 @@ public class AlfrescoSolrFingerprintTest extends AbstractAlfrescoSolrTests SOLRAPIQueueClient.aclMap.clear(); SOLRAPIQueueClient.nodeMap.clear(); SOLRAPIQueueClient.nodeContentMap.clear(); + + clearIndex(); + assertU(commit()); } - - @Test - public void testBasciFingerPrint() throws Exception + private void makeSureTransactionHasBeenIndexed(long transactionId) throws Exception { - /* - * Create and index an AclChangeSet. - */ - - logger.info("######### Starting fingerprint test ###########"); - AclChangeSet aclChangeSet = getAclChangeSet(1); - - Acl acl = getAcl(aclChangeSet); - Acl acl2 = getAcl(aclChangeSet); - - - AclReaders aclReaders = getAclReaders(aclChangeSet, acl, list("joel"), list("phil"), null); - AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, list("jim"), list("phil"), null); - - - indexAclChangeSet(aclChangeSet, - list(acl, acl2), - list(aclReaders, aclReaders2)); - - - //Check for the ACL state stamp. + //Check for the TXN state stamp. BooleanQuery.Builder builder = new BooleanQuery.Builder(); - builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!ACLTX")), BooleanClause.Occur.MUST)); - builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_ACLTXID, aclChangeSet.getId(), aclChangeSet.getId() + 1, true, false), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_TXID, transactionId, transactionId + 1, true, false), BooleanClause.Occur.MUST)); BooleanQuery waitForQuery = builder.build(); waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); + } - logger.info("#################### Passed First Test ##############################"); - - /* - * Create and index a Transaction - */ - - //First create a transaction. + @Test + public void testBasicFingerprint() throws Exception + { Transaction txn = getTransaction(0, 4); - //Next create two nodes to update for the transaction Node node1 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); Node node2 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); Node node3 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); Node node4 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); - - //Next create the NodeMetaData for each node. TODO: Add more metadata NodeMetaData nodeMetaData1 = getNodeMetaData(node1, txn, acl, "mike", null, false); NodeMetaData nodeMetaData2 = getNodeMetaData(node2, txn, acl, "mike", null, false); NodeMetaData nodeMetaData3 = getNodeMetaData(node3, txn, acl, "mike", null, false); NodeMetaData nodeMetaData4 = getNodeMetaData(node4, txn, acl, "mike", null, false); - List content = new ArrayList(); + Random randomizer = new Random(1); + String aFirstToken = Integer.toString(Math.abs(randomizer.nextInt())); + + indexTransaction(txn, + asList(node1, node2, node3, node4), + asList(nodeMetaData1, nodeMetaData2, nodeMetaData3, nodeMetaData4), + randomTextContent()); + + makeSureTransactionHasBeenIndexed(txn.getId()); + makeSureContentNodesHaveBeenIndexed("mike", aFirstToken, 4); + + assertFingerprintQueryCorrectness(node1.getId(), + "*[count(//doc)= 4]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", + "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']", + "//result/doc[4]/long[@name='DBID'][.='"+node4.getId()+"']"); + + assertFingerprintQueryCorrectness(nodeMetaData1.getNodeRef().getId(), + "*[count(//doc)= 4]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", + "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']", + "//result/doc[4]/long[@name='DBID'][.='"+node4.getId()+"']"); + + assertFingerprintQueryCorrectness(node1.getId() + "_70", + "*[count(//doc)= 2]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node3.getId()+"']"); + + assertFingerprintQueryCorrectness(nodeMetaData1.getNodeRef().getId() + "_70", + "*[count(//doc)= 2]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node3.getId()+"']"); + + assertFingerprintQueryCorrectness(node1.getId() + "_45", + "*[count(//doc)= 3]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", + "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']"); + + assertFingerprintQueryCorrectness(nodeMetaData1.getNodeRef().getId() + "_45", + "*[count(//doc)= 3]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", + "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']"); + + assertFingerprintQueryCorrectness(node4.getId() + "_30", + "*[count(//doc)= 4]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", + "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']", + "//result/doc[4]/long[@name='DBID'][.='"+node4.getId()+"']"); + + assertFingerprintQueryCorrectness(nodeMetaData4.getNodeRef().getId() + "_30", + "*[count(//doc)= 4]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", + "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']", + "//result/doc[4]/long[@name='DBID'][.='"+node4.getId()+"']"); + + assertFingerprintQueryCorrectness(node4.getId(), + "*[count(//doc)= 4]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", + "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']", + "//result/doc[4]/long[@name='DBID'][.='"+node4.getId()+"']"); + + assertFingerprintQueryCorrectness(nodeMetaData4.getNodeRef().getId(), + "*[count(//doc)= 4]", + "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", + "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", + "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']", + "//result/doc[4]/long[@name='DBID'][.='"+node4.getId()+"']"); + } + + @Test + public void testFingerprintStillExistsAfterNodeMetadataUpdate() throws Exception + { + Transaction txn = getTransaction(0, 1); + Node fileNode = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); + NodeMetaData fileMetaData = getNodeMetaData(fileNode, txn, acl, "mike", null, false); + + indexTransaction( + txn, + singletonList(fileNode), + singletonList(fileMetaData), + singletonList("This is a text content which is longer than the default hello world " + fileNode.getId() + + " returned by the Mock SOLRAPIQueueClient. This is needed because the \"min_hash\" field type " + + "definition in Solr doesn't take in account fields which produce less than 5 tokens (see the " + + "ShingleFilter settings).")); + + makeSureTransactionHasBeenIndexed(txn.getId()); + makeSureContentNodeHasBeenIndexed(fileNode, "mike", "world"); + + assertFingerprintQueryCorrectness(fileNode.getId(), "*[count(//doc)=1]","//result/doc[1]/long[@name='DBID'][.='" + fileNode.getId() + "']"); + + // Let's update the test node + fileMetaData.setOwner("Andrea"); + fileMetaData.getProperties().put(ContentModel.PROP_TITLE, new StringPropertyValue("This is the new file \"title\" metadata attribute.")); + reindexTransactionId(txn.getId()); + + makeSureContentNodeHasBeenIndexed(fileNode, "Andrea", "world"); + + assertFingerprintQueryCorrectness(fileNode.getId(), "*[count(//doc)=1]","//result/doc[1]/long[@name='DBID'][.='" + fileNode.getId() + "']"); + } + + /** + * Queries the index using a token from the (dummy) text produced by the test framework ("world", actually). + * Once the query returns a positive result we are sure the ContentTracker + * + *
    + *
  1. + * Fetched the text content associated with the current node, from Alfresco + *
  2. + *
  3. + * Computed a fingerprint (using the retrieved text) for the node + *
  4. + *
  5. + * Updated the node definition in the (Solr)ContentStore and in Solr + *
  6. + *
+ * + * Last but not least, we are also making sure that CommitTracker executed its cycle as well (otherwise document + * wouldn't be searchable). + * + * @param node an addition term which will be appended as a required clause in the executed query. + * @param testTerm a term which is supposed to be in the indexed content + * @param owner the #FIELD_OWNER which will be used as an additional required query clause. + * @throws Exception in case the MAX_WAIT_TIME is reached and the node is not in results. + */ + private void makeSureContentNodeHasBeenIndexed(final Node node, final String owner, String testTerm) throws Exception + { + waitForDocCount(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", testTerm)), 1, MAX_WAIT_TIME); + + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", Long.toString(node.getId()))), 1, MAX_WAIT_TIME); + + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", testTerm)), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_OWNER, owner)), BooleanClause.Occur.MUST)); + waitForDocCount(builder.build(), 1, MAX_WAIT_TIME); + } + + + /** + * Queries the index using a token from the (dummy) text produced by the test framework. + * Once the query returns a positive result we are sure the ContentTracker + * + *
    + *
  1. + * Fetched the text content associated with the test nodes, from Alfresco + *
  2. + *
  3. + * Computed a fingerprint (using the retrieved text) for each node + *
  4. + *
  5. + * Updated the nodes definitions in the (Solr)ContentStore and in Solr + *
  6. + *
+ * + * Last but not least, we are also making sure that CommitTracker executed its cycle as well (otherwise documents + * wouldn't be searchable). + * + * @param owner the #FIELD_OWNER which will be used as an additional required query clause. + * @param testTerm a term which is supposed to be in the indexed content + * @throws Exception in case the MAX_WAIT_TIME is reached and the node is not in results. + */ + private void makeSureContentNodesHaveBeenIndexed(final String owner, String testTerm, final int expectedCount) throws Exception + { + waitForDocCount(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", testTerm)), expectedCount, MAX_WAIT_TIME); + + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", testTerm)), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_OWNER, owner)), BooleanClause.Occur.MUST)); + waitForDocCount(builder.build(), expectedCount, MAX_WAIT_TIME); + } + + /** + * Asserts that a query in the format
FINGERPRINT:
correctly returns the node we are testing. + * + * @param id the node identifier. + */ + private void assertFingerprintQueryCorrectness(long id, String ... assertions) + { + assertFingerprintQueryCorrectness(String.valueOf(id), assertions); + } + + /** + * Asserts that a query in the format
FINGERPRINT:
correctly returns the node we are testing. + * + * @param id the node identifier. + */ + private void assertFingerprintQueryCorrectness(String id, String ... assertions) + { + ModifiableSolrParams params = new ModifiableSolrParams() + .add("q", "FINGERPRINT:" + id) + .add("qt", "/afts") + .add("start", "0") + .add("rows", "6") + .add("sort", "id asc"); + // .add("fq", "{!afts}AUTHORITY_FILTER_FROM_JSON"); + + SolrServletRequest req = areq(params, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [ \"joel\"], \"tenants\": [ \"\" ]}"); + assertQ(req, assertions); + } + + private List randomTextContent() + { int[] sizes = {2000, 1000, 1500, 750}; - Random r = new Random(1); - String token1 = Integer.toString(Math.abs(r.nextInt())); - - for(int i=0; i<4; i++) { - Random rand = new Random(1); - StringBuilder buf = new StringBuilder(); - int size = sizes[i]; - for(int s=0; s0) { - buf.append(" "); - } - buf.append(Integer.toString(Math.abs(rand.nextInt()))); - } - content.add(buf.toString()); - } - - //Index the transaction, nodes, and nodeMetaDatas. - //Note that the content is automatically created by the test framework. - indexTransaction(txn, - list(node1, node2, node3, node4), - list(nodeMetaData1, nodeMetaData2, nodeMetaData3, nodeMetaData4), - content); - - //Check for the TXN state stamp. - logger.info("#################### Started Second Test ##############################"); - builder = new BooleanQuery.Builder(); - builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); - builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_TXID, txn.getId(), txn.getId() + 1, true, false), BooleanClause.Occur.MUST)); - waitForQuery = builder.build(); - - waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); - logger.info("#################### Passed Second Test ##############################"); - - /* - * Query the index for the content - */ - - waitForDocCount(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); - waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", token1)), 4, MAX_WAIT_TIME); - - logger.info("#################### Passed Third Test ##############################"); - - ModifiableSolrParams params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + node1.getId()); //Query for an id in the content field. The node id is automatically populated into the content field by test framework - params.add("qt", "/afts"); - params.add("fl", "DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - SolrServletRequest req = areq(params, null); - assertQ(req, "*[count(//doc)=4]", - "//result/doc[1]/long[@name='DBID'][.='" + node1.getId() + "']", - "//result/doc[2]/long[@name='DBID'][.='" + node3.getId() + "']", - "//result/doc[3]/long[@name='DBID'][.='" + node2.getId() + "']", - "//result/doc[4]/long[@name='DBID'][.='" + node4.getId() + "']"); - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + node1.getId() + "_70"); //Query for an id in the content field. The node id is automatically populated into the content field by test framework - params.add("qt", "/afts"); - params.add("fl","DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - req = areq(params, null); - assertQ(req, "*[count(//doc)= 2]", - "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", - "//result/doc[2]/long[@name='DBID'][.='"+node3.getId()+"']"); - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + node1.getId()+"_45"); //Query for an id in the content field. The node id is automatically populated into the content field by test framework - params.add("qt", "/afts"); - params.add("fl","DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - req = areq(params, null); - assertQ(req, "*[count(//doc)= 3]", - "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", - "//result/doc[2]/long[@name='DBID'][.='"+node3.getId()+"']", - "//result/doc[3]/long[@name='DBID'][.='"+node2.getId()+"']"); - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + node1.getId()+"_30"); - params.add("qt", "/afts"); - params.add("fl","DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - req = areq(params, null); - assertQ(req, "*[count(//doc)= 4]", - "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", - "//result/doc[2]/long[@name='DBID'][.='"+node3.getId()+"']", - "//result/doc[3]/long[@name='DBID'][.='"+node2.getId()+"']", - "//result/doc[4]/long[@name='DBID'][.='"+node4.getId()+"']"); - - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + node4.getId()); - params.add("qt", "/afts"); - params.add("fl","DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - req = areq(params, null); - assertQ(req, "*[count(//doc)= 4]", - "//result/doc[1]/long[@name='DBID'][.='"+node4.getId()+"']", - "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", - "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']", - "//result/doc[4]/long[@name='DBID'][.='"+node1.getId()+"']"); - - //Test nodeRef - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + nodeMetaData1.getNodeRef().getId()); //Query for an id in the content field. The node id is automatically populated into the content field by test framework - params.add("qt", "/afts"); - params.add("fl", "DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - - req = areq(params, null); - assertQ(req, "*[count(//doc)=4]", - "//result/doc[1]/long[@name='DBID'][.='" + node1.getId() + "']", - "//result/doc[2]/long[@name='DBID'][.='" + node3.getId() + "']", - "//result/doc[3]/long[@name='DBID'][.='" + node2.getId() + "']", - "//result/doc[4]/long[@name='DBID'][.='" + node4.getId() + "']"); - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + nodeMetaData1.getNodeRef().getId() + "_70"); //Query for an id in the content field. The node id is automatically populated into the content field by test framework - params.add("qt", "/afts"); - params.add("fl","DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - req = areq(params, null); - assertQ(req, "*[count(//doc)= 2]", - "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", - "//result/doc[2]/long[@name='DBID'][.='"+node3.getId()+"']"); - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + nodeMetaData1.getNodeRef().getId()+"_45"); //Query for an id in the content field. The node id is automatically populated into the content field by test framework - params.add("qt", "/afts"); - params.add("fl","DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - req = areq(params, null); - assertQ(req, "*[count(//doc)= 3]", - "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", - "//result/doc[2]/long[@name='DBID'][.='"+node3.getId()+"']", - "//result/doc[3]/long[@name='DBID'][.='"+node2.getId()+"']"); - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + nodeMetaData1.getNodeRef().getId()+"_30"); - params.add("qt", "/afts"); - params.add("fl","DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - req = areq(params, null); - assertQ(req, "*[count(//doc)= 4]", - "//result/doc[1]/long[@name='DBID'][.='"+node1.getId()+"']", - "//result/doc[2]/long[@name='DBID'][.='"+node3.getId()+"']", - "//result/doc[3]/long[@name='DBID'][.='"+node2.getId()+"']", - "//result/doc[4]/long[@name='DBID'][.='"+node4.getId()+"']"); - - - params = new ModifiableSolrParams(); - params.add("q", "FINGERPRINT:" + nodeMetaData4.getNodeRef().getId()); - params.add("qt", "/afts"); - params.add("fl","DBID,score"); - params.add("start", "0"); - params.add("rows", "6"); - req = areq(params, null); - assertQ(req, "*[count(//doc)= 4]", - "//result/doc[1]/long[@name='DBID'][.='"+node4.getId()+"']", - "//result/doc[2]/long[@name='DBID'][.='"+node2.getId()+"']", - "//result/doc[3]/long[@name='DBID'][.='"+node3.getId()+"']", - "//result/doc[4]/long[@name='DBID'][.='"+node1.getId()+"']"); - + return stream(sizes) + .mapToObj(item -> { + Random randomizer = new Random(1); + return range(0, item) + .mapToObj(i -> randomizer.nextInt()) + .map(Object::toString) + .collect(Collectors.joining(" "));}) + .collect(Collectors.toList()); } } From e7932913f0e51f75c4086ff5418a8ca61d9b11b4 Mon Sep 17 00:00:00 2001 From: agazzarini Date: Thu, 18 Apr 2019 09:39:43 +0200 Subject: [PATCH 06/37] [MNT-20449] Copy MINHASH from cached doc (if exists) --- .../main/java/org/alfresco/solr/SolrInformationServer.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java index 1a2f086a5..9dbb8915c 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -145,6 +145,7 @@ import org.apache.lucene.util.BytesRefBuilder; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; +import org.apache.solr.common.SolrInputField; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.FacetParams; import org.apache.solr.common.params.ModifiableSolrParams; @@ -2352,6 +2353,10 @@ public class SolrInformationServer implements InformationServer if (cachedDoc != null) { + ofNullable(cachedDoc.getField("MINHASH")) + .map(SolrInputField::getValue) + .ifPresent(minHash -> newDoc.setField("MINHASH", minHash)); + // Builds up the new solr doc from the cached content regardless of whether or not it is current List fields = AlfrescoSolrDataModel.getInstance().getIndexedFieldNamesForProperty( propertyQName).getFields(); From 9ee5dc608b9f7ac0669db292e578b3ede3237032 Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Thu, 18 Apr 2019 15:03:39 +0200 Subject: [PATCH 07/37] [SEARCH-1490] Modified utility methods in abstract class --- .../solr/AbstractAlfrescoDistributedTest.java | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/AbstractAlfrescoDistributedTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/AbstractAlfrescoDistributedTest.java index 950ebbe84..58cdcf737 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/AbstractAlfrescoDistributedTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/AbstractAlfrescoDistributedTest.java @@ -227,24 +227,34 @@ public abstract class AbstractAlfrescoDistributedTest extends SolrTestInitialize * @throws Exception */ public static void waitForDocCount(Query query, int count, long waitMillis) throws Exception + { + waitForDocCount(luceneToSolrQuery(query), count, waitMillis); + } + + public static void waitForDocCount(ModifiableSolrParams query, int count, long waitMillis) throws Exception { long begin = System.currentTimeMillis(); //TODO: Support multiple cores per jetty SolrClient standaloneClient = getStandaloneClients().get(0); //Get the first one - waitForDocCountCore(standaloneClient, luceneToSolrQuery(query), count, waitMillis, begin); + waitForDocCountCore(standaloneClient, query, count, waitMillis, begin); waitForShardsCount(query, count, waitMillis, begin); } - public static void assertShardCount(int shardNumber, Query query, int count) throws Exception { + public static void assertShardCount(int shardNumber, Query query, int count) throws Exception + { + assertShardCount(shardNumber, luceneToSolrQuery(query), count); + } + + public static void assertShardCount(int shardNumber, ModifiableSolrParams query, int count) throws Exception + { List clients = getShardedClients(); SolrClient client = clients.get(shardNumber); - QueryResponse response = client.query(luceneToSolrQuery(query)); + QueryResponse response = client.query(query); int totalHits = (int) response.getResults().getNumFound(); if (count != totalHits) { throw new Exception("Expecting " + count + " docs on shard " + shardNumber + " , found " + totalHits); } - } private static String escapeQueryClause(String query) @@ -291,15 +301,16 @@ public abstract class AbstractAlfrescoDistributedTest extends SolrTestInitialize public static void waitForShardsCount(Query query, int count, long waitMillis, long start) throws Exception { SolrQuery solrQuery = luceneToSolrQuery(query); - solrQuery.setParam("shards", shards); waitForShardsCount(solrQuery, count, waitMillis, start); } - public static void waitForShardsCount(SolrQuery query, int count, long waitMillis, long start) throws Exception + public static void waitForShardsCount(ModifiableSolrParams query, int count, long waitMillis, long start) throws Exception { + long timeOut = start+waitMillis; int totalCount = 0; + query.set("shards", shards); SolrClient clientShard = clientShards.get(0); while (System.currentTimeMillis() < timeOut) { @@ -450,7 +461,7 @@ public abstract class AbstractAlfrescoDistributedTest extends SolrTestInitialize } public static void waitForDocCountCore(SolrClient client, - SolrQuery query, + ModifiableSolrParams query, long expectedNumFound, long waitMillis, long startMillis) @@ -734,6 +745,13 @@ public abstract class AbstractAlfrescoDistributedTest extends SolrTestInitialize return request; } + + protected QueryResponse queryN(SolrClient solrClient, boolean setDistribParams, SolrParams p) throws IOException, SolrServerException { + final ModifiableSolrParams params = new ModifiableSolrParams(p); + params.set("distrib", "false"); + return solrClient.query(params); + } + /** * Returns the QueryResponse from {@link #queryRandomShard} */ From 5a3d7d746c05752d75e05b95bb724f1d5408c76e Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Thu, 18 Apr 2019 15:20:21 +0200 Subject: [PATCH 08/37] [SEARCH-1490] Added unit test for cascade tracker in sharded environment. --- .../DistributedCascadeTrackerTest.java | 203 ++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java new file mode 100644 index 000000000..c14021fb2 --- /dev/null +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java @@ -0,0 +1,203 @@ +/* + * Copyright (C) 2005-2019 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.solr.tracker; + +import org.alfresco.model.ContentModel; +import org.alfresco.solr.AbstractAlfrescoDistributedTest; +import org.alfresco.solr.client.Acl; +import org.alfresco.solr.client.AclChangeSet; +import org.alfresco.solr.client.AclReaders; +import org.alfresco.solr.client.Node; +import org.alfresco.solr.client.NodeMetaData; +import org.alfresco.solr.client.StringPropertyValue; +import org.alfresco.solr.client.Transaction; +import org.alfresco.util.Pair; +import org.apache.lucene.index.Term; +import org.apache.lucene.search.TermQuery; + +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.Properties; + + +import static org.alfresco.solr.AlfrescoSolrUtils.ancestors; +import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; +import static org.alfresco.solr.AlfrescoSolrUtils.getNode; +import static org.alfresco.solr.AlfrescoSolrUtils.getNodeMetaData; +import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; +import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; +import static org.alfresco.solr.AlfrescoSolrUtils.list; +import static org.carrot2.shaded.guava.common.collect.ImmutableList.of; + +/** + * @author Elia + */ +public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTest +{ + private Node parentFolder; + private NodeMetaData parentFolderMetadata; + + private Node childShard0; + private NodeMetaData childShardMetadata0; + + private Node childShard1; + private NodeMetaData childShardMetadata1; + + private final String pathParent = "pathParent"; + private final String pathChild0 = "pathChiled0"; + private final String pathChild1 = "pathChiled2"; + + private final int timeout = 100000; + + @BeforeClass + private static void initData() throws Throwable + { + initSolrServers(2, "DistributedCascadeTrackerTest", getShardMethod()); + } + + @AfterClass + private static void destroyData() throws Throwable + { + dismissSolrServers(); + } + + + @Before + public void indexData() throws Exception + { + /* + * Create and index an AclChangeSet. + */ + AclChangeSet aclChangeSet = getAclChangeSet(1); + + Acl acl = getAcl(aclChangeSet); + AclReaders aclReaders = getAclReaders(aclChangeSet, acl, list("joel"), list("phil"), null); + + indexAclChangeSet(aclChangeSet, + of(acl), + of(aclReaders)); + + indexNodes(acl); + } + + + @Test + public void test() throws Exception + { + String cascadingFirstChild = "cascadingFirstChild"; + String cascadingSecondChild = "cascadingSecondChild"; + + /* + * Modify children paths in order to see if they are updated both after cascading. + */ + childShardMetadata0.setPaths(of(new Pair<>(cascadingFirstChild, null))); + childShardMetadata1.setPaths(of(new Pair<>(cascadingSecondChild, null))); + + + /* + * Check the path of the two nodes before cascading + */ + assertShardCount(0, params("qt", "/afts", "q", "PATH:" + pathChild0), 1); + assertShardCount(1, params("qt", "/afts", "q", "PATH:" + pathChild1), 1); + + /* + * Index a transaction with the parent folder update + */ + indexParentFolderWithCascade(); + + waitForDocCount(params("qt", "/afts", "q", "PATH:" + cascadingFirstChild), 1, timeout); + + // Check if the path is updated for both the nodes + assertShardCount(0, params("qt", "/afts", "q", "PATH:" + cascadingFirstChild), 1); + assertShardCount(1, params("qt", "/afts", "q", "PATH:" + cascadingSecondChild), 1); + + // The old paths are no longer in the index + assertShardCount(0, params("qt", "/afts", "q", "PATH:" + pathChild0), 0); + assertShardCount(1, params("qt", "/afts", "q", "PATH:" + pathChild1), 0); + + } + + + private void indexNodes(Acl acl) throws Exception{ + + Transaction bigTxn = getTransaction(0, 3); + + /* + * Create parent folder in the first shard + */ + parentFolder = getNode(0, bigTxn, acl, Node.SolrApiNodeStatus.UPDATED); + parentFolderMetadata = getNodeMetaData(parentFolder, bigTxn, acl, "elia", null, false); + parentFolderMetadata.setPaths(of(new Pair<>(pathParent, null))); + + /* + * Create first node. + * This will be stored in the first shard (range [0-100]) + */ + childShard0 = getNode(99, bigTxn, acl, Node.SolrApiNodeStatus.UPDATED); + childShardMetadata0 = getNodeMetaData(childShard0, bigTxn, acl, "elia", ancestors(parentFolderMetadata.getNodeRef()), false); + childShardMetadata0.setPaths(of(new Pair<>(pathChild0, null))); + + /* + * Create second node. + * This will be stored in the second shard (range [101-200]) + */ + childShard1 = getNode(101, bigTxn, acl, Node.SolrApiNodeStatus.UPDATED); + childShardMetadata1 = getNodeMetaData(childShard1, bigTxn, acl, "elia", ancestors(parentFolderMetadata.getNodeRef()), false); + childShardMetadata1.setPaths(of(new Pair<>(pathChild1, null))); + + + indexTransaction(bigTxn, + of(parentFolder, childShard0, childShard1), + of(parentFolderMetadata, childShardMetadata0, childShardMetadata1)); + + + /* + * Get sure the nodes are indexed correctly in the shards + */ + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 3, timeout); + assertShardCount(0, new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 2); + assertShardCount(1, new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 1); + } + + + private void indexParentFolderWithCascade(){ + + Transaction bigTxn = getTransaction(0, 1); + + parentFolder.setTxnId(bigTxn.getId()); + parentFolderMetadata.setTxnId(bigTxn.getId()); + parentFolderMetadata.getProperties().put(ContentModel.PROP_CASCADE_TX, new StringPropertyValue(Long.toString(bigTxn.getId()))); + + indexTransaction(bigTxn, of(parentFolder), of(parentFolderMetadata)); + } + + + protected static Properties getShardMethod() + { + Properties prop = new Properties(); + prop.put("shard.method", "DB_ID_RANGE"); + return prop; + } +} + From 97d77cfd6bf00d454a74fbccfc00c5a76c4cdf4e Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Thu, 18 Apr 2019 15:21:37 +0200 Subject: [PATCH 09/37] [SEARCH-1490] --- .../alfresco/solr/tracker/DistributedCascadeTrackerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java index c14021fb2..152597d6d 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java @@ -65,8 +65,8 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe private NodeMetaData childShardMetadata1; private final String pathParent = "pathParent"; - private final String pathChild0 = "pathChiled0"; - private final String pathChild1 = "pathChiled2"; + private final String pathChild0 = "pathChild0"; + private final String pathChild1 = "pathChild2"; private final int timeout = 100000; From e70ca2c572cd637d71a96ece5b9a397e548f2af8 Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Thu, 18 Apr 2019 15:56:27 +0200 Subject: [PATCH 10/37] [SEARCH-1490] Added test annotations. --- .../alfresco/solr/tracker/DistributedCascadeTrackerTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java index 152597d6d..f5912bde8 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java @@ -31,6 +31,8 @@ import org.alfresco.util.Pair; import org.apache.lucene.index.Term; import org.apache.lucene.search.TermQuery; +import org.apache.lucene.util.LuceneTestCase; +import org.apache.solr.SolrTestCaseJ4; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; @@ -53,6 +55,8 @@ import static org.carrot2.shaded.guava.common.collect.ImmutableList.of; /** * @author Elia */ +@SolrTestCaseJ4.SuppressSSL +@LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"}) public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTest { private Node parentFolder; From ea848f57603037e619e2d859950f929fd675bd48 Mon Sep 17 00:00:00 2001 From: agazzarini Date: Sat, 20 Apr 2019 16:29:07 +0200 Subject: [PATCH 11/37] [MNT-20449] Added the MNT scenario in DistributedFingerPrintTest as well --- ...istributedAlfrescoSolrFingerPrintTest.java | 226 ++++++++++++------ 1 file changed, 156 insertions(+), 70 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/DistributedAlfrescoSolrFingerPrintTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/DistributedAlfrescoSolrFingerPrintTest.java index 12158f5eb..980ad45db 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/DistributedAlfrescoSolrFingerPrintTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/DistributedAlfrescoSolrFingerPrintTest.java @@ -18,6 +18,7 @@ */ package org.alfresco.solr.query; +import static java.util.Arrays.asList; import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; @@ -25,12 +26,13 @@ import static org.alfresco.solr.AlfrescoSolrUtils.getNode; import static org.alfresco.solr.AlfrescoSolrUtils.getNodeMetaData; import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; -import static org.alfresco.solr.AlfrescoSolrUtils.list; +import static java.util.Collections.singletonList; import java.util.ArrayList; import java.util.List; import java.util.Random; +import org.alfresco.model.ContentModel; import org.alfresco.repo.search.adaptor.lucene.QueryConstants; import org.alfresco.solr.AbstractAlfrescoDistributedTest; import org.alfresco.solr.client.Acl; @@ -38,6 +40,7 @@ import org.alfresco.solr.client.AclChangeSet; import org.alfresco.solr.client.AclReaders; import org.alfresco.solr.client.Node; import org.alfresco.solr.client.NodeMetaData; +import org.alfresco.solr.client.StringPropertyValue; import org.alfresco.solr.client.Transaction; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause; @@ -60,31 +63,26 @@ import org.junit.Test; @LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"}) public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDistributedTest { - private static Node[] nodes = new Node[4]; - private static NodeMetaData[] nodesMetada = new NodeMetaData[4]; - + private static long MAX_WAIT_TIME = 80000; + + private static Node[] NODES = new Node[4]; + private static NodeMetaData[] NODES_METADATA = new NodeMetaData[4]; + private static Acl ACL; + @BeforeClass private static void initData() throws Throwable { - initSolrServers(2,"DistributedAlfrescoSolrFingerPrintTest",null); - /* - * Create and index an AclChangeSet. - */ + initSolrServers(2,getClassName(),null); AclChangeSet aclChangeSet = getAclChangeSet(1); - Acl acl = getAcl(aclChangeSet); + ACL = getAcl(aclChangeSet); Acl acl2 = getAcl(aclChangeSet); + AclReaders aclReaders = getAclReaders(aclChangeSet, ACL, singletonList("joel"), singletonList("phil"), null); + AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, singletonList("jim"), singletonList("phil"), null); - AclReaders aclReaders = getAclReaders(aclChangeSet, acl, list("joel"), list("phil"), null); - AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, list("jim"), list("phil"), null); - - - indexAclChangeSet(aclChangeSet, - list(acl, acl2), - list(aclReaders, aclReaders2)); - + indexAclChangeSet(aclChangeSet, asList(ACL, acl2), asList(aclReaders, aclReaders2)); //Check for the ACL state stamp. BooleanQuery.Builder builder = new BooleanQuery.Builder(); @@ -93,27 +91,22 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist BooleanQuery waitForQuery = builder.build(); waitForDocCountAllCores(waitForQuery, 1, 80000); - /* - * Create and index a Transaction - */ - - //First create a transaction. Transaction txn = getTransaction(0, 4); - //Next create two nodes to update for the transaction - nodes[0] = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); - nodes[1] = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); - nodes[2] = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); - nodes[3] = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); + //Next create two NODES to update for the transaction + NODES[0] = getNode(txn, ACL, Node.SolrApiNodeStatus.UPDATED); + NODES[1] = getNode(txn, ACL, Node.SolrApiNodeStatus.UPDATED); + NODES[2] = getNode(txn, ACL, Node.SolrApiNodeStatus.UPDATED); + NODES[3] = getNode(txn, ACL, Node.SolrApiNodeStatus.UPDATED); //Next create the NodeMetaData for each node. TODO: Add more metadata - nodesMetada[0] = getNodeMetaData(nodes[0], txn, acl, "mike", null, false); - nodesMetada[1] = getNodeMetaData(nodes[1], txn, acl, "mike", null, false); - nodesMetada[2] = getNodeMetaData(nodes[2], txn, acl, "mike", null, false); - nodesMetada[3] = getNodeMetaData(nodes[3], txn, acl, "mike", null, false); + NODES_METADATA[0] = getNodeMetaData(NODES[0], txn, ACL, "mike", null, false); + NODES_METADATA[1] = getNodeMetaData(NODES[1], txn, ACL, "mike", null, false); + NODES_METADATA[2] = getNodeMetaData(NODES[2], txn, ACL, "mike", null, false); + NODES_METADATA[3] = getNodeMetaData(NODES[3], txn, ACL, "mike", null, false); - List content = new ArrayList(); + List content = new ArrayList<>(); int[] sizes = {2000, 1000, 1500, 750}; Random r = new Random(1); @@ -127,16 +120,16 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist if(s>0) { buf.append(" "); } - buf.append(Integer.toString(Math.abs(rand.nextInt()))); + buf.append(Math.abs(rand.nextInt())); } content.add(buf.toString()); } - //Index the transaction, nodes, and nodeMetaDatas. + //Index the transaction, NODES, and nodeMetaDatas. //Note that the content is automatically created by the test framework. indexTransaction(txn, - list(nodes[0], nodes[1], nodes[2], nodes[3]), - list(nodesMetada[0], nodesMetada[1], nodesMetada[2], nodesMetada[3]), + asList(NODES[0], NODES[1], NODES[2], NODES[3]), + asList(NODES_METADATA[0], NODES_METADATA[1], NODES_METADATA[2], NODES_METADATA[3]), content); //Check for the TXN state stamp. @@ -156,7 +149,7 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist } @AfterClass - private static void destroyData() throws Throwable + private static void destroyData() { dismissSolrServers(); } @@ -167,7 +160,7 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist putHandleDefaults(); QueryResponse response = query(getDefaultTestClient(), true, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}", - params("q", "FINGERPRINT:"+nodes[0].getId(), + params("q", "FINGERPRINT:"+ NODES[0].getId(), "qt", "/afts", "shards.qt", "/afts", "start", "0", @@ -175,22 +168,22 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist "rows", "100")); SolrDocumentList docs = response.getResults(); - assertTrue(docs.getNumFound() == 4); + assertEquals(4, docs.getNumFound()); SolrDocument doc0 = docs.get(0); long dbid0 = (long)doc0.getFieldValue("DBID"); - assertTrue(dbid0 == nodes[0].getId()); + assertEquals(dbid0, NODES[0].getId()); SolrDocument doc1 = docs.get(1); long dbid1 = (long)doc1.getFieldValue("DBID"); - assertTrue(dbid1 == nodes[2].getId()); + assertEquals(dbid1, NODES[2].getId()); SolrDocument doc2 = docs.get(2); long dbid2 = (long)doc2.getFieldValue("DBID"); - assertTrue(dbid2 == nodes[1].getId()); + assertEquals(dbid2, NODES[1].getId()); SolrDocument doc3 = docs.get(3); long dbid3 = (long)doc3.getFieldValue("DBID"); - assertTrue(dbid3 == nodes[3].getId()); + assertEquals(dbid3, NODES[3].getId()); } @Test @@ -199,7 +192,7 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist putHandleDefaults(); QueryResponse response = query(getDefaultTestClient(), true, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}", - params("q", "FINGERPRINT:" + nodes[0].getId()+"_70", + params("q", "FINGERPRINT:" + NODES[0].getId()+"_70", "qt", "/afts", "shards.qt", "/afts", "start", "0", @@ -207,14 +200,14 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist "rows", "100")); SolrDocumentList docs = response.getResults(); - assertTrue(docs.getNumFound() == 2); + assertEquals(2, docs.getNumFound()); SolrDocument doc0 = docs.get(0); long dbid0 = (long)doc0.getFieldValue("DBID"); - assertTrue(dbid0 == nodes[0].getId()); + assertEquals(dbid0, NODES[0].getId()); SolrDocument doc1 = docs.get(1); long dbid1 = (long)doc1.getFieldValue("DBID"); - assertTrue(dbid1 == nodes[2].getId()); + assertEquals(dbid1, NODES[2].getId()); } @Test @@ -223,7 +216,7 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist putHandleDefaults(); QueryResponse response = query(getDefaultTestClient(), true, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}", - params("q", "FINGERPRINT:" + nodes[0].getId()+"_45", + params("q", "FINGERPRINT:" + NODES[0].getId()+"_45", "qt", "/afts", "shards.qt", "/afts", "start", "0", @@ -231,18 +224,18 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist "rows", "100")); SolrDocumentList docs = response.getResults(); - assertTrue(docs.getNumFound() == 3); + assertEquals(3, docs.getNumFound()); SolrDocument doc0 = docs.get(0); long dbid0 = (long)doc0.getFieldValue("DBID"); - assertTrue(dbid0 == nodes[0].getId()); + assertEquals(dbid0, NODES[0].getId()); SolrDocument doc1 = docs.get(1); long dbid1 = (long)doc1.getFieldValue("DBID"); - assertTrue(dbid1 == nodes[2].getId()); + assertEquals(dbid1, NODES[2].getId()); SolrDocument doc2 = docs.get(2); long dbid2 = (long)doc2.getFieldValue("DBID"); - assertTrue(dbid2 == nodes[1].getId()); + assertEquals(dbid2, NODES[1].getId()); } @Test @@ -251,7 +244,7 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist putHandleDefaults(); QueryResponse response = query(getDefaultTestClient(), true, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}", - params("q", "FINGERPRINT:"+nodesMetada[0].getNodeRef().getId(), + params("q", "FINGERPRINT:"+ NODES_METADATA[0].getNodeRef().getId(), "qt", "/afts", "shards.qt", "/afts", "start", "0", @@ -259,22 +252,22 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist "rows", "100")); SolrDocumentList docs = response.getResults(); - assertTrue(docs.getNumFound() == 4); + assertEquals(4, docs.getNumFound()); SolrDocument doc0 = docs.get(0); long dbid0 = (long)doc0.getFieldValue("DBID"); - assertTrue(dbid0 == nodes[0].getId()); + assertEquals(dbid0, NODES[0].getId()); SolrDocument doc1 = docs.get(1); long dbid1 = (long)doc1.getFieldValue("DBID"); - assertTrue(dbid1 == nodes[2].getId()); + assertEquals(dbid1, NODES[2].getId()); SolrDocument doc2 = docs.get(2); long dbid2 = (long)doc2.getFieldValue("DBID"); - assertTrue(dbid2 == nodes[1].getId()); + assertEquals(dbid2, NODES[1].getId()); SolrDocument doc3 = docs.get(3); long dbid3 = (long)doc3.getFieldValue("DBID"); - assertTrue(dbid3 == nodes[3].getId()); + assertEquals(dbid3, NODES[3].getId()); } @Test @@ -283,7 +276,7 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist putHandleDefaults(); QueryResponse response = query(getDefaultTestClient(), true, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}", - params("q", "FINGERPRINT:" + nodesMetada[0].getNodeRef().getId() +"_70", + params("q", "FINGERPRINT:" + NODES_METADATA[0].getNodeRef().getId() +"_70", "qt", "/afts", "shards.qt", "/afts", "start", "0", @@ -291,14 +284,14 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist "rows", "100")); SolrDocumentList docs = response.getResults(); - assertTrue(docs.getNumFound() == 2); + assertEquals(2, docs.getNumFound()); SolrDocument doc0 = docs.get(0); long dbid0 = (long)doc0.getFieldValue("DBID"); - assertTrue(dbid0 == nodes[0].getId()); + assertEquals(dbid0, NODES[0].getId()); SolrDocument doc1 = docs.get(1); long dbid1 = (long)doc1.getFieldValue("DBID"); - assertTrue(dbid1 == nodes[2].getId()); + assertEquals(dbid1, NODES[2].getId()); } @Test @@ -307,7 +300,7 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist putHandleDefaults(); QueryResponse response = query(getDefaultTestClient(), true, "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}", - params("q", "FINGERPRINT:" + nodesMetada[0].getNodeRef().getId() +"_45", + params("q", "FINGERPRINT:" + NODES_METADATA[0].getNodeRef().getId() +"_45", "qt", "/afts", "shards.qt", "/afts", "start", "0", @@ -315,20 +308,113 @@ public class DistributedAlfrescoSolrFingerPrintTest extends AbstractAlfrescoDist "rows", "100")); SolrDocumentList docs = response.getResults(); - assertTrue(docs.getNumFound() == 3); + assertEquals(3, docs.getNumFound()); SolrDocument doc0 = docs.get(0); long dbid0 = (long)doc0.getFieldValue("DBID"); - assertTrue(dbid0 == nodes[0].getId()); + assertEquals(dbid0, NODES[0].getId()); SolrDocument doc1 = docs.get(1); long dbid1 = (long)doc1.getFieldValue("DBID"); - assertTrue(dbid1 == nodes[2].getId()); + assertEquals(dbid1, NODES[2].getId()); SolrDocument doc2 = docs.get(2); long dbid2 = (long)doc2.getFieldValue("DBID"); - assertTrue(dbid2 == nodes[1].getId()); + assertEquals(dbid2, NODES[1].getId()); } - - -} + @Test + public void testFingerprintStillExistsAfterNodeMetadataUpdate() throws Exception + { + putHandleDefaults(); + + Transaction txn = getTransaction(0, 1); + Node fileNode = getNode(txn, ACL, Node.SolrApiNodeStatus.UPDATED); + NodeMetaData fileMetaData = getNodeMetaData(fileNode, txn, ACL, "mike", null, false); + + indexTransaction( + txn, + singletonList(fileNode), + singletonList(fileMetaData), + singletonList("This is a text content which is longer than the default hello world " + fileNode.getId() + + " returned by the Mock SOLRAPIQueueClient. This is needed because the \"min_hash\" field type " + + "definition in Solr doesn't take in account fields which produce less than 5 tokens (see the " + + "ShingleFilter settings).")); + + makeSureContentNodeHasBeenIndexed(fileNode, "mike", "longer"); + + QueryResponse response = query(getDefaultTestClient(), true, + "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}", + params("q", "FINGERPRINT:" + fileMetaData.getNodeRef().getId(), + "qt", "/afts", + "shards.qt", "/afts", + "start", "0", + "fl", "DBID,score", + "rows", "100")); + + SolrDocumentList docs = response.getResults(); + assertEquals(1, docs.getNumFound()); + assertEquals(fileNode.getId(), docs.iterator().next().getFieldValue("DBID")); + + // Let's update the test node + fileMetaData.setOwner("Andrea"); + fileMetaData.getProperties().put(ContentModel.PROP_TITLE, new StringPropertyValue("This is the new file \"title\" metadata attribute.")); + + txn = getTransaction(0, 1); + + indexTransaction( + txn, + singletonList(fileNode), + singletonList(fileMetaData)); + + makeSureContentNodeHasBeenIndexed(fileNode, "Andrea", "longer"); + + response = query(getDefaultTestClient(), true, + "{\"locales\":[\"en\"], \"templates\": [{\"name\":\"t1\", \"template\":\"%cm:content\"}], \"authorities\": [\"joel\"], \"tenants\": []}", + params("q", "FINGERPRINT:" + fileMetaData.getNodeRef().getId(), + "qt", "/afts", + "shards.qt", "/afts", + "start", "0", + "fl", "DBID,score", + "rows", "100")); + docs = response.getResults(); + assertEquals(1, docs.getNumFound()); + assertEquals(fileNode.getId(), docs.iterator().next().getFieldValue("DBID")); + } + + /** + * Queries the index using a token from the (dummy) text produced by the test framework ("world", actually). + * Once the query returns a positive result we are sure the ContentTracker + * + *
    + *
  1. + * Fetched the text content associated with the current node, from Alfresco + *
  2. + *
  3. + * Computed a fingerprint (using the retrieved text) for the node + *
  4. + *
  5. + * Updated the node definition in the (Solr)ContentStore and in Solr + *
  6. + *
+ * + * Last but not least, we are also making sure that CommitTracker executed its cycle as well (otherwise document + * wouldn't be searchable). + * + * @param node an addition term which will be appended as a required clause in the executed query. + * @param testTerm a term which is supposed to be in the indexed content + * @param owner the #FIELD_OWNER which will be used as an additional required query clause. + * @throws Exception in case the MAX_WAIT_TIME is reached and the node is not in results. + */ + private void makeSureContentNodeHasBeenIndexed(final Node node, final String owner, String testTerm) throws Exception + { + waitForDocCount(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", testTerm)), 1, MAX_WAIT_TIME); + + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", Long.toString(node.getId()))), 1, MAX_WAIT_TIME); + + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", testTerm)), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_OWNER, owner)), BooleanClause.Occur.MUST)); + waitForDocCount(builder.build(), 1, MAX_WAIT_TIME); + } +} \ No newline at end of file From 49ced9f426723eddf3a3b4c90b2d0797eb16c0ad Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Mon, 22 Apr 2019 10:07:59 +0200 Subject: [PATCH 12/37] [SEARCH-1490] Added comments. Renamed test method --- .../DistributedCascadeTrackerTest.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java index f5912bde8..8fe93f2ca 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java @@ -54,6 +54,7 @@ import static org.carrot2.shaded.guava.common.collect.ImmutableList.of; /** * @author Elia + * Test cascade tracker in multi sharded environment. */ @SolrTestCaseJ4.SuppressSSL @LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"}) @@ -75,9 +76,9 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe private final int timeout = 100000; @BeforeClass - private static void initData() throws Throwable + private void initData() throws Throwable { - initSolrServers(2, "DistributedCascadeTrackerTest", getShardMethod()); + initSolrServers(2, getClassName(), getShardMethod()); } @AfterClass @@ -86,7 +87,12 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe dismissSolrServers(); } - + /** + * Default data is indexed in solr. + * 1 folder node with 2 children nodes. + * 1 Child is on the same shard of the parent folder (shard 0) while the other is on shard 1. + * @throws Exception + */ @Before public void indexData() throws Exception { @@ -105,9 +111,13 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe indexNodes(acl); } - + /** + * This test check if after updating the parent folder, + * both the children(in both the shards) are updated as well in cascading. + * @throws Exception + */ @Test - public void test() throws Exception + public void testCascadeShouldHappenInBothShardsAfterUpdateParentFolder() throws Exception { String cascadingFirstChild = "cascadingFirstChild"; String cascadingSecondChild = "cascadingSecondChild"; @@ -143,7 +153,8 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe } - private void indexNodes(Acl acl) throws Exception{ + private void indexNodes(Acl acl) throws Exception + { Transaction bigTxn = getTransaction(0, 3); @@ -185,7 +196,8 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe } - private void indexParentFolderWithCascade(){ + private void indexParentFolderWithCascade() + { Transaction bigTxn = getTransaction(0, 1); From 25d62399751788b56a416be2400b7f674eda1b8d Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Mon, 22 Apr 2019 10:21:48 +0200 Subject: [PATCH 13/37] [SEARCH-1490] Removed unused method --- .../alfresco/solr/AbstractAlfrescoDistributedTest.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/AbstractAlfrescoDistributedTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/AbstractAlfrescoDistributedTest.java index 58cdcf737..308e2a3fb 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/AbstractAlfrescoDistributedTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/AbstractAlfrescoDistributedTest.java @@ -744,13 +744,7 @@ public abstract class AbstractAlfrescoDistributedTest extends SolrTestInitialize request.setMethod(SolrRequest.METHOD.POST); return request; } - - - protected QueryResponse queryN(SolrClient solrClient, boolean setDistribParams, SolrParams p) throws IOException, SolrServerException { - final ModifiableSolrParams params = new ModifiableSolrParams(p); - params.set("distrib", "false"); - return solrClient.query(params); - } + /** * Returns the QueryResponse from {@link #queryRandomShard} From d9543ee5dd090014aad2a74c19d7ebd33e51b609 Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Mon, 22 Apr 2019 10:41:29 +0200 Subject: [PATCH 14/37] [SEARCH-1490] Moved create shards in @Before method instead of @BeforeClass --- .../DistributedCascadeTrackerTest.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java index 8fe93f2ca..4b5724ccf 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java @@ -33,9 +33,8 @@ import org.apache.lucene.search.TermQuery; import org.apache.lucene.util.LuceneTestCase; import org.apache.solr.SolrTestCaseJ4; -import org.junit.AfterClass; +import org.junit.After; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import java.util.Properties; @@ -60,6 +59,7 @@ import static org.carrot2.shaded.guava.common.collect.ImmutableList.of; @LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"}) public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTest { + private Node parentFolder; private NodeMetaData parentFolderMetadata; @@ -73,16 +73,18 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe private final String pathChild0 = "pathChild0"; private final String pathChild1 = "pathChild2"; + private final int timeout = 100000; - @BeforeClass + @Before private void initData() throws Throwable { initSolrServers(2, getClassName(), getShardMethod()); + indexData(); } - @AfterClass - private static void destroyData() throws Throwable + @After + private void destroyData() throws Throwable { dismissSolrServers(); } @@ -93,8 +95,7 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe * 1 Child is on the same shard of the parent folder (shard 0) while the other is on shard 1. * @throws Exception */ - @Before - public void indexData() throws Exception + private void indexData() throws Exception { /* * Create and index an AclChangeSet. @@ -111,14 +112,16 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe indexNodes(acl); } + /** - * This test check if after updating the parent folder, + * This test checks if after updating the parent folder, * both the children(in both the shards) are updated as well in cascading. * @throws Exception */ @Test public void testCascadeShouldHappenInBothShardsAfterUpdateParentFolder() throws Exception { + String cascadingFirstChild = "cascadingFirstChild"; String cascadingSecondChild = "cascadingSecondChild"; @@ -128,7 +131,6 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe childShardMetadata0.setPaths(of(new Pair<>(cascadingFirstChild, null))); childShardMetadata1.setPaths(of(new Pair<>(cascadingSecondChild, null))); - /* * Check the path of the two nodes before cascading */ @@ -181,18 +183,17 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe childShardMetadata1 = getNodeMetaData(childShard1, bigTxn, acl, "elia", ancestors(parentFolderMetadata.getNodeRef()), false); childShardMetadata1.setPaths(of(new Pair<>(pathChild1, null))); - indexTransaction(bigTxn, of(parentFolder, childShard0, childShard1), of(parentFolderMetadata, childShardMetadata0, childShardMetadata1)); - /* * Get sure the nodes are indexed correctly in the shards */ waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 3, timeout); assertShardCount(0, new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 2); assertShardCount(1, new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 1); + } @@ -209,7 +210,7 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe } - protected static Properties getShardMethod() + protected Properties getShardMethod() { Properties prop = new Properties(); prop.put("shard.method", "DB_ID_RANGE"); From 05bdb069cc8a2e4cd6d7c4ade3a1fd12749a00c3 Mon Sep 17 00:00:00 2001 From: agazzarini Date: Mon, 22 Apr 2019 06:36:58 -0400 Subject: [PATCH 15/37] [ SEARCH-1490 ] Minor formal warnings removed --- .../DistributedCascadeTrackerTest.java | 47 ++++++------------- 1 file changed, 15 insertions(+), 32 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java index 4b5724ccf..cba592b86 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedCascadeTrackerTest.java @@ -18,6 +18,17 @@ */ package org.alfresco.solr.tracker; +import static java.util.Collections.singletonList; +import static org.alfresco.solr.AlfrescoSolrUtils.ancestors; +import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; +import static org.alfresco.solr.AlfrescoSolrUtils.getNode; +import static org.alfresco.solr.AlfrescoSolrUtils.getNodeMetaData; +import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; +import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; +import static org.carrot2.shaded.guava.common.collect.ImmutableList.of; + import org.alfresco.model.ContentModel; import org.alfresco.solr.AbstractAlfrescoDistributedTest; import org.alfresco.solr.client.Acl; @@ -36,21 +47,8 @@ import org.apache.solr.SolrTestCaseJ4; import org.junit.After; import org.junit.Before; import org.junit.Test; - import java.util.Properties; - -import static org.alfresco.solr.AlfrescoSolrUtils.ancestors; -import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; -import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; -import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; -import static org.alfresco.solr.AlfrescoSolrUtils.getNode; -import static org.alfresco.solr.AlfrescoSolrUtils.getNodeMetaData; -import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; -import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; -import static org.alfresco.solr.AlfrescoSolrUtils.list; -import static org.carrot2.shaded.guava.common.collect.ImmutableList.of; - /** * @author Elia * Test cascade tracker in multi sharded environment. @@ -59,7 +57,6 @@ import static org.carrot2.shaded.guava.common.collect.ImmutableList.of; @LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"}) public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTest { - private Node parentFolder; private NodeMetaData parentFolderMetadata; @@ -84,7 +81,7 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe } @After - private void destroyData() throws Throwable + private void destroyData() { dismissSolrServers(); } @@ -93,17 +90,13 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe * Default data is indexed in solr. * 1 folder node with 2 children nodes. * 1 Child is on the same shard of the parent folder (shard 0) while the other is on shard 1. - * @throws Exception */ private void indexData() throws Exception { - /* - * Create and index an AclChangeSet. - */ AclChangeSet aclChangeSet = getAclChangeSet(1); Acl acl = getAcl(aclChangeSet); - AclReaders aclReaders = getAclReaders(aclChangeSet, acl, list("joel"), list("phil"), null); + AclReaders aclReaders = getAclReaders(aclChangeSet, acl, singletonList("joel"), singletonList("phil"), null); indexAclChangeSet(aclChangeSet, of(acl), @@ -112,11 +105,9 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe indexNodes(acl); } - /** * This test checks if after updating the parent folder, * both the children(in both the shards) are updated as well in cascading. - * @throws Exception */ @Test public void testCascadeShouldHappenInBothShardsAfterUpdateParentFolder() throws Exception @@ -151,13 +142,10 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe // The old paths are no longer in the index assertShardCount(0, params("qt", "/afts", "q", "PATH:" + pathChild0), 0); assertShardCount(1, params("qt", "/afts", "q", "PATH:" + pathChild1), 0); - } - private void indexNodes(Acl acl) throws Exception { - Transaction bigTxn = getTransaction(0, 3); /* @@ -193,13 +181,10 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 3, timeout); assertShardCount(0, new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 2); assertShardCount(1, new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), 1); - } - private void indexParentFolderWithCascade() { - Transaction bigTxn = getTransaction(0, 1); parentFolder.setTxnId(bigTxn.getId()); @@ -209,12 +194,10 @@ public class DistributedCascadeTrackerTest extends AbstractAlfrescoDistributedTe indexTransaction(bigTxn, of(parentFolder), of(parentFolderMetadata)); } - - protected Properties getShardMethod() + private Properties getShardMethod() { Properties prop = new Properties(); prop.put("shard.method", "DB_ID_RANGE"); return prop; } -} - +} \ No newline at end of file From dd2504c895a0bceadaae193829dbdb416822ff70 Mon Sep 17 00:00:00 2001 From: Tom Page Date: Wed, 24 Apr 2019 16:00:12 +0100 Subject: [PATCH 16/37] Update ADRs 0004 and 0005 following review. --- .../architecture/decisions/0004-community-mirror.md | 10 +++++----- .../decisions/0005-merge-tests-and-production-code.md | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md b/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md index ee0d39fdc..f94890df2 100644 --- a/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md +++ b/search-services/alfresco-search/doc/architecture/decisions/0004-community-mirror.md @@ -4,7 +4,7 @@ Date: 09/04/2019 ## Status -Proposed +Approved ## Context @@ -32,12 +32,12 @@ git checkout $branch A ticket has been raised to track this [[1]]. A script has been written to do the initial codebase merge and mirroring [[2]]. -We will rewrite the whole history of the SearchServices repository using the mirroring command (the only change will be -the commit ids). +We will rewrite the whole history of the SearchServices repository using the mirroring command. This will result in the +new repository containing a new root pom file and the search services code beneath that. -All changes except those within the module called alfresco-insight-engine-parent will be mirrored. +All changes except those within the module called insight-engine will be mirrored. -The root pom file in the community project will point to the alfresco-insight-engine-parent pom file, so community users +The root pom file in the community project will include a reference to the insight-engine pom file, so community users will have to build from within the alfresco-search-parent directory. [1]: https://issues.alfresco.com/jira/browse/SEARCH-1397 diff --git a/search-services/alfresco-search/doc/architecture/decisions/0005-merge-tests-and-production-code.md b/search-services/alfresco-search/doc/architecture/decisions/0005-merge-tests-and-production-code.md index cb4191f10..8af97eb65 100644 --- a/search-services/alfresco-search/doc/architecture/decisions/0005-merge-tests-and-production-code.md +++ b/search-services/alfresco-search/doc/architecture/decisions/0005-merge-tests-and-production-code.md @@ -4,13 +4,13 @@ Date: 09/04/2019 ## Status -Proposed +Approved ## Context In [ADR 3: "Combined Codebase"](0003-combined-codebase.md) we decided to merge the production and end-to-end test -repositories. In [ADR 4: "Community Mirror"](0004-community-mirror.md) we discuss setting up a mirror for code within a -particular submodule. +repositories. In [ADR 4: "Community Mirror"](0004-community-mirror.md) we discuss setting up a mirror for the community +code. ## Decision From bc125917234e3305a6526a5b61b73dec32b2fc88 Mon Sep 17 00:00:00 2001 From: Tom Page Date: Wed, 24 Apr 2019 16:00:56 +0100 Subject: [PATCH 17/37] Create ADR 006 to describe releases of a combined project. --- .../decisions/0006-release-synchronisation.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 search-services/alfresco-search/doc/architecture/decisions/0006-release-synchronisation.md diff --git a/search-services/alfresco-search/doc/architecture/decisions/0006-release-synchronisation.md b/search-services/alfresco-search/doc/architecture/decisions/0006-release-synchronisation.md new file mode 100644 index 000000000..482f327da --- /dev/null +++ b/search-services/alfresco-search/doc/architecture/decisions/0006-release-synchronisation.md @@ -0,0 +1,47 @@ +# 6. Release Synchronisation + +Date: 24/04/2019 + +## Status + +Proposed + +## Context + +In [ADR 3: "Combined Codebase"](0003-combined-codebase.md) we decided to merge the Search Services and Insight Engine +repositories. In [ADR 4: "Community Mirror"](0004-community-mirror.md) we discussed how we would set up a build job to +ensure community code is available to the community. In particular we decided: + +> We will mirror `master` and all branches starting with `release/` to a branch with the same name on GitHub. + +## Decision + +During the combining of the Search Services and Insight Engine codebases we will create a branch `master` by merging +the existing `master` branches of those two projects. We will update the version of Insight Engine to match Search Services - that +is 1.4.0-SNAPSHOT. + +## Consequences + +The next minor release of Insight Engine will be 1.4.0 which will happen at the same time as the release of Search +Services 1.4.0. There will be no Insight Engine releases with the versions 1.2.x or 1.3.x. + +Here are a few examples to illustrate the process for future releases. Note that other releases (including service +packs, etc.) will follow a similar logic based on whether they are pre- or post- 1.4.0. + +* SS 1.3.0 needs a hotfix + +We release from the `release/alfresco-search-services/V1.3.0.x` branch. + +* IE 1.1.0 needs a hotfix + +We release from the `release/alfresco-insight-engine/V1.1.0.x` branch. We need to use the maven version 1.1.0.2 for the +IE modules and 1.4.0-IE1.1.0.2 for the SS modules. + +* SS 1.4.0 needs a hotfix + +We'll create a hotfix release for both SS and IE (since they will both have the same issue). This will be from the +`release/V1.4.0.x` branch (which would have already been created if SS/IE 1.4.0 had been released). + +* IE 1.4.0 needs a hotfix + +We'll create a hotfix release for both SS and IE from `release/V1.4.0.x` (and not publicise SS 1.4.0.1). From d8e1ac2c6dd3058d24563f6c582a68b2c1c27b9a Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Wed, 24 Apr 2019 18:25:43 +0200 Subject: [PATCH 18/37] How indexation and T-Service works --- .../content-tracker-current.png | Bin 0 -> 55931 bytes .../content-transform-sequence.png | Bin 0 -> 71361 bytes .../event-based-content-tracker-spike.md | 90 ++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-current.png create mode 100644 search-services/alfresco-search/doc/architecture/event-trackers/content-transform-sequence.png create mode 100644 search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-current.png b/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-current.png new file mode 100644 index 0000000000000000000000000000000000000000..d58ddf6a0728bc288533c642b8b1f58b00d3da64 GIT binary patch literal 55931 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 literal 0 HcmV?d00001 diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md new file mode 100644 index 000000000..f8ea8e2e0 --- /dev/null +++ b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md @@ -0,0 +1,90 @@ +# Event Based Content Tracker for Alfresco + +![Completeness Badge](https://img.shields.io/badge/Document_Level-In_Progress-yellow.svg?style=flat-square) + +## Context + +The current approach of the Content Tracker in Search Service is to query Solr for any *dirty* documents which it then fetches from Alfresco. Once the content is successfully obtained from Alfresco, it marks it clean which eventually get committed to the index. This approach will need to be modified as it applies pressure on Alfresco on every call to get the content. Taking an event based approach where the Content Tracker subscribes to a *topic* with policy the specific behaviour will allow to get the extracted content when ready. + +There are currently different alternatives to be considered: + +1. No change to Search Service. The repository will off load the transformation to Transformation Service and pause the thread requesting the transformation until the content is transformed. +2. Introduce a new microservice that sits between Search Service and the Transformation Service. The content is off loaded to Transformation Service and the microservice stores the content for Search Service to ingest. +3. The Content Tracker that consumes content based on events + +This document describes and explores these alternatives to provide the background required to produce an **ADR** (Architectural Decision Record) related to this topic. + + +## How Text Extraction Works + +Following information has been extracted from Alfresco Content Services 6.1 and Alfresco Search Services 1.3. + +![Content Tracker in ACS 6.1](content-tracker-current.png) + +**Components referenced in the figure** + +* [alfresco-search](https://github.com/Alfresco/SearchServices/tree/master/alfresco-search): Alfresco SOLR Application, deployed in SOLR Jetty web application `solr.war` as library +* [alfresco-remote-api](https://github.com/Alfresco/alfresco-remote-api): REST API Layer for Alfresco Content Services, deployed in Alfresco Tomcat web application `alfresco.war` as library +* [alfresco-repository](https://github.com/Alfresco/alfresco-repository): Metadata and content storage for Alfresco Content Services, deployed in Alfresco Tomcat web application `alfresco.war` as library +* [Apache Tika](https://github.com/Alfresco/alfresco-tika): Detection and extraction of metadata and text from content, deployed in Alfresco Tomcat web application `alfresco.war` as library +* [LibreOffice](https://www.libreoffice.org): This program is used in *serverless* mode to provide content transformation, installed locally on a server. It can be used *DIRECT* as TCP service (usually listening in port 8100) or via [JodConverter](http://docs.alfresco.com/community/concepts/OOo-subsystems-intro.html). + +**Text Extraction Process** + +Since more detailed information on the Content Tracker [1] is available, the text extraction process happens inside `SolrInformationServer` class. When *dirty* documents are being indexed, `SOLRAPIClient` is invoked (1) to retrieve Text Content from Alfresco Repository using the REST API (2) + +``` +/api/solr/textContent?nodeId=&propertyQName= +``` + +* `id` is the identifier of the document in database +* `propertyQName` is the identifier of the property representing the content of the document, `{http://www.alfresco.org/model/content/1.0}content` by default + +Both classes are part of [Alfresco Solr Application](https://github.com/Alfresco/SearchServices/tree/master/alfresco-search). + +The request to `textContent` is processed by `NodeContentGet` Web Script (3) at [Alfresco Remote API](https://github.com/Alfresco/alfresco-remote-api). This component finds the right Content Transformer to produce the required Text Content from the original mime type. *Apache Tika*, as local class invocation, and *LibreOffice*, as TCP service or using JodConverter [2], are the Content Transformers available. + +Once the transformation has been performed (4) by the Content Transformer, the Stream is returned back to `SolrInformationServer` (5) and the indexing process continues. + +*Note*: `NodeContentGet` web script is using a deprecated API to find the right transformer: [getActiveTransformers()](https://github.com/Alfresco/alfresco-repository/blob/alfresco-repository-7.60/src/main/java/org/alfresco/repo/content/ContentServiceImpl.java#L897). + + +## How the New Transform Service Works + +Before going on with the alternatives evaluation, a quick overview of the new **Alfresco Transform Service** is provided. + +Since ACS 6.0, transformations are performed by different *microservices* named as *Transform Engines* (T-Engine): + +* [alfresco-docker-alfresco-pdf-renderer](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-alfresco-pdf-renderer) includes a PDFium [3] *wrapper* named Alfresco PDF Renderer [4] to provide operations on PDF files, as extracting the first page +* [alfresco-docker-imagemagick](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-imagemagick) includes an ImageMagick [5] *wrapper* to provide operations on images, as generating a thumbnail +* [alfresco-docker-libreoffice](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-libreoffice) includes a LibreOffice *wrapper* to provide transformation operations from a source mime type to a target mime type +* [alfresco-docker-tika](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-tika) exposes Apache Tika [6] features for mime type transformation + +A *Transform Engine* is a dockerized REST API providing transformation services and *renderization* operations. The [Transform Service](https://github.com/Alfresco/alfresco-transform-service) is a message router, currently working with ActiveMQ, to provide Transformation Requests to Transform Engines and to manage Transformation Replies from Transform Engines. This *router* finds the right Transform Engine for a Transformation Request depending on the source and target mime types. + +To reduce the transit of content between the services, a dockerized [Shared File Store](https://github.com/Alfresco/alfresco-shared-file-store) REST API is used to have a single point of storage. When a transformation operation is requested, the source file is uploaded to the *Shared File Store* and when the transformation operation has been performed, the target file is uploaded also to that *Shared File Store*. Once the operation has been consumed, both source and target files are removed from *Shared File Store*. + +![Content Transform Sequence](content-transform-sequence.png) + +**Components referenced in the figure** + +* [T-Client](https://github.com/Alfresco/alfresco-repository/blob/alfresco-repository-7.60/src/main/java/org/alfresco/messaging/camel/routes/OnContentUpdateRenditionRoute.java#L88): Currently ACS is a transformer client, requesting transformation operations to *Transform Service* via JMS events +* [Shared File Store](https://github.com/Alfresco/alfresco-shared-file-store): REST API Layer to share contents between a *T-Client* and the *T-Engine* +* [T-Service](https://github.com/Alfresco/alfresco-transform-service): Alfresco Transform Service to route JMS Events to T-Engines +* [T-Engine](https://git.alfresco.com/Repository/alfresco-docker-transformers): Transformation Engines provides transformation operations on content, consuming the source from `Shared File Store` and producing the target also in `Shared File Store`. Currently Apache Tika, LibreOffice, ImageMagick and PDF Renderer are available + +**Transformation Process** + +*T-Client* uploads the source content to `Shared File Store` using a REST API invocation (1) to retrieve a *srcContentRef* (2). + +After that, *T-Client* creates a new `TransformRequest` event with the *srcContentRef* and the requested operation (3). + +*T-Service* consumes the event and invokes to the right *T-Engine* (LibreOffice, ImageMagick, PdfRenderer, Apache Tika) with the *srcContentRef* and the operation requested (4). + +The *T-Engine* performs the transformation (5) and stores the result in the `Shared File Store` to retrieve a *targetContentRef* (6). + +*T-Service* creates a new `TransformReply` event with the *targetContentRef* that is consumed by *T-Client* (7), where the transformed content is downloaded from `Shared File Store` using a REST API invocation (8). After that, for instance, this downloaded content is stored in the repository as a new *rendition*, so the temporary copy at `Shared File Store` is not required anymore. + +Both source and target files can be deleted from `Shared File Store` after the operation ends successfully (9). + +*Note*. Detailed JSON syntax for `Transform Request` and `Transform Reply` are available at [Spec for Transform Request & Reply](https://github.com/Alfresco/alfresco-transform-service/blob/master/docs/transformation-request-reply.md) From 69fb170c7535c05d7c32296e9ed0b2333b256e85 Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Wed, 24 Apr 2019 18:27:47 +0200 Subject: [PATCH 19/37] Alternative 1 Evaluation --- .../event-trackers/content-tracker-1.png | Bin 0 -> 117149 bytes .../event-based-content-tracker-spike.md | 42 ++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-1.png diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-1.png b/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-1.png new file mode 100644 index 0000000000000000000000000000000000000000..731a1f7df07195de8955d7bc7251a294527071b6 GIT binary patch literal 117149 zcma&Nby$>bw>ON4gfvJ=H%JWK-5?FpAuZA&44u*f14yTIcMshRp&$)IcXz`#-p{l5 zvybC_zjwlTwF+Ln4QRd&!E72)i?=KMH_@ zd);p>DXA(iDM_K~>|kkaYXJu*7ydm7NmFAEU+mZm(DoA^I~KlA4AR zg|;_1+f=p}n*{Y8m5z)imYO58e-s{SgLoJGGzv#i(fY@(kYT@0`jLl@r|12w`mvV# z4EH1cZRnR{{p}ZGw2m}!wmRtkBu<%JJhL&N^tj>9>lX++a8ztBG%>X4Or&K)Uux3z zcR)g0;og!u%tiO#U0*+c`0e3ML;%O|cGER8DlO=YUDMcwc0vd)wykK%+&9xa0gzk9 zD2*z0yUKvt@8Os*IY1ahbRHgaDXU8i2miGP^cpTZ`G=c~h_-)!4nnpqU@N?rA$Pnp zjcMaVRpva)QpX;WDp%yN#(�ni?K5Q3}TidhuPr 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ð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 literal 0 HcmV?d00001 diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md index f8ea8e2e0..42b2fda73 100644 --- a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md +++ b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md @@ -88,3 +88,45 @@ The *T-Engine* performs the transformation (5) and stores the result in the `Sha Both source and target files can be deleted from `Shared File Store` after the operation ends successfully (9). *Note*. Detailed JSON syntax for `Transform Request` and `Transform Reply` are available at [Spec for Transform Request & Reply](https://github.com/Alfresco/alfresco-transform-service/blob/master/docs/transformation-request-reply.md) + + +## Alternatives evaluation + +Below different alternatives for integrating Content Tracking with the New Transform Service are described. + + +### 1 - No Change to Search Service + +The repository will off load the transformation to Transformation Service and pause the thread requesting the transformation until the content is transformed. + +![No Change to Search Service](content-tracker-1.png) + +**Components referenced in the figure** + +* [alfresco-search](https://github.com/Alfresco/SearchServices/tree/master/alfresco-search): Alfresco SOLR Application, deployed in SOLR Jetty web application `solr.war` as library +* [alfresco-remote-api](https://github.com/Alfresco/alfresco-remote-api): REST API Layer for Alfresco Content Services, deployed in Alfresco Tomcat web application `alfresco.war` as library +* [alfresco-repository](https://github.com/Alfresco/alfresco-repository): Metadata and content storage for Alfresco Content Services, deployed in Alfresco Tomcat web application `alfresco.war` as library +* [Shared File Store](https://github.com/Alfresco/alfresco-shared-file-store): REST API Layer to share contents between a *T-Client* and the *T-Engine* +* [T-Service](https://github.com/Alfresco/alfresco-transform-service): Alfresco Transform Service to route JMS Events to T-Engines +* [DockerTika](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-tika) REST API Layer for *T-Engine* based in Tika +* [DockerLibreoffice](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-libreoffice) REST API Layer for *T-Engine* based in LibreOffice + +**Transformation Process** + +From SOLR side, the code remains unchanged, so the transformation to text is requested to `NodeContentGet` web script (2) as before. + +From this point, *Content Transformer* stores the source content in the `Shared File Store` to retrieve the `sourceRef` (4) and creates a new *Transform Request* event to be consumed by *Transform Service* (5). + +*Transform Service* uses routing component to find the right *Transform Engine* (Tika, LibreOffice...) and perform the invocation with the `sourceRef` and the target media type (TXT) to the *Transform Engine* (6). + +Source Content is retrieved from `Shared File Store` using `sourceRef` (7) and the transformation is performed (8) and the result is stored in the `Shared File Store` to retrieve the `targetRef` (9). + +After that, *Transform Engine* creates a new *Transform Reply* event (10) to be consumed by *Content Transformer*, where the content is retrieved from `Shared File Store` using `targetRef` (11). + +As the original request to `NodeContentGet` has been paused while performing the transformation, *Content Transformer* returns the TextContent Stream back and the response is delivered to SOLR (12). + +Both source and target files can be deleted from `Shared File Store` after the operation ends successfully (13,14). + +**Consequences** + +No consequences for *Search Services* are expected from applying this alternative. Probably then only one is that the whole indexing process will become slower, as the transformation is performed by the new Transform Service and contents are uploaded and downloaded using HTTP protocol. Anyway, this problem can be overcome by providing the right resources to Transform Service. From 268d819a84ee5f95fb47d5bf2c41c90acb4ba2d7 Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Wed, 24 Apr 2019 18:28:53 +0200 Subject: [PATCH 20/37] Alternative 2 Evaluation --- .../event-trackers/content-tracker-2.png | Bin 0 -> 102744 bytes .../event-based-content-tracker-spike.md | 44 ++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-2.png diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-2.png b/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-2.png new file mode 100644 index 0000000000000000000000000000000000000000..0d226a9303502751365a07c1e2bd579937429d31 GIT binary patch literal 102744 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

** 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�UVatkzq&T0d_(Rj&k%kGoPxIlr&FmG4=fR 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 Z%QU> A new microservice, named *DockerSOLR* in the diagram, will handle transformations to text requests from Content Tracker. This service replaces previous `NodeContentGet` web script. + +Content Tracker invokes to *Docker SOLR* using HTTP REST API to start the transformation (1). + +*Docker SOLR* invokes the repository to retrieve the source content for the node using the Remote API (2) and stores the result in the `Shared File Store` to retrieve the `sourceRef` (3). + +After that, *Docker SOLR* creates a new *Transform Request* event to be consumed by *Transform Service* (4). + +*Transform Service* uses routing component to find the right *Transform Engine* (Tika, LibreOffice...) and perform the invocation with the `sourceRef` and the target media type (TXT) to the *Transform Engine* (5). + +Source Content is retrieved from `Shared File Store` using `sourceRef` (6) and the transformation is performed (7) and the result is stored in the `Shared File Store` to retrieve the `targetRef` (8). + +After that, *Transform Engine* creates a new *Transform Reply* event (9) to be consumed by *Docker SOLR*, where the content is retrieved from `Shared File Store` using `targetRef` (10). + +As the original request (1) has been paused while performing the transformation, *Docker SOLR* returns the TextContent Stream back and the response is delivered to Content Tracker (11). + +Both source and target files can be deleted from `Shared File Store` after the operation ends successfully (12,13). + +**Consequences** + +* A new dependency from Transform Service version must be included in Search Services compatibility matrix. +* It's required to create a switch in Search Services to use current Content Tracker (based in REST API invocation) or the new Content Tracker (including JMS events), mainly to preserve 5.2 compatibility. +* A new component *DockerSOLR* must be developed. This component is a new *T-Client*, dockerizable and JMS ready. Incoming threads must be paused till the JMS *TransforReply* is consumed, so some logic and control need to be added to current code [7] +* **RISK** Currently Transform Service is not supporting several *T-Clients* for the same *Transform Service*, despite the story is being developed [ATS-208](https://issues.alfresco.com/jira/browse/ATS-208). This will exclude this alternative, as *ACS* is the only *T-Client* supported by now. Also, for a Sharding environment, more than one indexing *T-Client* can be required. From c2362fb3c575783c67bb647c7c92dafa1bb67d6e Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Thu, 25 Apr 2019 10:02:30 +0200 Subject: [PATCH 21/37] Alternative 3 Evaluation (Apache Kafka) --- .../content-tracker-3-kafka.png | Bin 0 -> 143956 bytes .../event-based-content-tracker-spike.md | 116 ++++++++++++++++++ .../event-trackers/index-sequence.png | Bin 0 -> 55507 bytes 3 files changed, 116 insertions(+) create mode 100644 search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-3-kafka.png create mode 100644 search-services/alfresco-search/doc/architecture/event-trackers/index-sequence.png diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-3-kafka.png b/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-3-kafka.png new file mode 100644 index 0000000000000000000000000000000000000000..8e928b9612b0aeddaec81ab7024afb818bb1a9ed GIT binary patch literal 143956 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 a{|uWZyfc&DdO@232s~Z=T-G@yGywq12ONU{ literal 0 HcmV?d00001 diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md index fbc57812c..03c169e14 100644 --- a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md +++ b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md @@ -2,6 +2,18 @@ ![Completeness Badge](https://img.shields.io/badge/Document_Level-In_Progress-yellow.svg?style=flat-square) +**Contents** + +- [Context](#context) +- [How Text Extraction Works](#how-text-extraction-works) +- [How the New Transform Service Works](#how-the-new-transform-service-works) +- [Alternatives evaluation](#alternatives-evaluation) + - [1 - No Change to Search Service](#1---no-change-to-search-service) + - [2 - New Microservice in the Middle](#2---new-microservice-in-the-middle) + - [3 - Event Oriented Content Tracking](#3---event-oriented-content-tracking) +- [Findings](#findings) +- [References](#references) + ## Context The current approach of the Content Tracker in Search Service is to query Solr for any *dirty* documents which it then fetches from Alfresco. Once the content is successfully obtained from Alfresco, it marks it clean which eventually get committed to the index. This approach will need to be modified as it applies pressure on Alfresco on every call to get the content. Taking an event based approach where the Content Tracker subscribes to a *topic* with policy the specific behaviour will allow to get the extracted content when ready. @@ -174,3 +186,107 @@ Both source and target files can be deleted from `Shared File Store` after the o * It's required to create a switch in Search Services to use current Content Tracker (based in REST API invocation) or the new Content Tracker (including JMS events), mainly to preserve 5.2 compatibility. * A new component *DockerSOLR* must be developed. This component is a new *T-Client*, dockerizable and JMS ready. Incoming threads must be paused till the JMS *TransforReply* is consumed, so some logic and control need to be added to current code [7] * **RISK** Currently Transform Service is not supporting several *T-Clients* for the same *Transform Service*, despite the story is being developed [ATS-208](https://issues.alfresco.com/jira/browse/ATS-208). This will exclude this alternative, as *ACS* is the only *T-Client* supported by now. Also, for a Sharding environment, more than one indexing *T-Client* can be required. + + +### 3 - Event Oriented Content Tracking + +The Content Tracker that consumes content based on events. + +**Why Apache Kafka** + +SOLR indexes require a full history of events (transactions) to be rebuilt from scratch, so message brokers with no storage (like *ActiveMQ*, currently used by ACS and Transform Service) are not recommended for this scenario. + +Since Amazon is providing an [MSK](https://aws.amazon.com/msk/) (Amazon Managed Streaming for Kafka) and Apache Kafka is a streaming data store, this product seems to fit better the requirements for Search Services. + +Apache Kafka *PoC* has been developed in order to test different requirements: + +* Apache Kafka and Zookeeper compatibility with current [ACS Stack](https://github.com/Alfresco/acs-deployment) + +* Producing events to a topic using messages in JSON format + +* Consuming events from a topic: live, from an offset and from the beginning + + * Consuming events *live* from a topic is required for a regular running of the platform, where index requests are consumed to perform indexing operations + + * Consuming events *from an offset* is required to provide a safe Search Service re-starting, as Indexing System needs then to catch up with events production that may happen during Search Service stopping + + * Consuming events *from beginning* is required when rebuilding SOLR indexes from scratch + +The *PoC* is available at https://github.com/aborroy/event-content-tracker-kafka + + +**The I-* design** + +The new paradigm introduced by *Kafka*, requires a set of components to be provided to the platform in order to provide the indexation process. + +![Components I-*](index-sequence.png) + +* *I-Client*: Spring Boot App receiving indexing requests from an ACS behaviour, a REST API invocation or an ActiveMQ message. +* [Shared File Store](https://github.com/Alfresco/alfresco-shared-file-store): REST API Layer to store text files to be indexed. +* *I-Service*: Spring Boot App listening to a *topic* in Apache Kafka to process `IndexRequest` messages. +* *I-Engine*: Spring Boot App receiving REST API invocations to perform indexing operations. + +The *I-Client* receives a new request for a node `Id` with `txtContentRef` to be indexed, and it produces a new `IndexRequest` message for Apache Kafka indexing `topic` (1) + +The *I-Service* consumes the message from Apache Kafka indexing `topic` and invokes the *I-Engine* with the `Id` and the `txtContentRef` (2) + +The *I-Engine* retrieves the text content file from *Shared File Store* (3) and performs the indexation in the indexer (SOLR) updating the current `offset` global value (4) + +The result is propagated till the *I-Client* to provide feedback (5, 6) + + +**Sample content tracking process** + +![Event Oriented Content Tracking](content-tracker-3-kafka.png) + +**Components referenced in the figure** + +* *OnUpdateBehaviour* [I-Client, T-Client]: This component can be developed as part of Alfresco Repository or as a new module for Alfresco Repository. This component is a *T-Client* (transformation client) and also a *I-Client* (indexation client). When the content of a node is updated, a new `TransformRequest` event to transform to text is published to ActiveMQ to be consumed by *Transform Service* and a new `IndexRequest` event to perform the indexation is published to Kafka Topic `Indexation` +* [Shared File Store](https://github.com/Alfresco/alfresco-shared-file-store): REST API Layer to share contents between a *T-Client* and the *T-Engine* +* [TransformService](https://github.com/Alfresco/alfresco-transform-service): Alfresco Transform Service to route JMS Events to *T-Engines* +* *EventSearchService* [I-Service]: This component is a *I-Service*, receiving `IndexRequest` to be delivered to a *I-Engine* +* *ContentTrackerService* [I-Engine]: This component is a *I-Engine*, providing the indexing logic for an `IndexRequest` +* [alfresco-search](https://github.com/Alfresco/SearchServices/tree/master/alfresco-search): Custom SOLR Code including indexing logic components: `ContentTracker`, `SolrInformationServer` and `SolrContentStore` + +**Transformation Process** + +A new content updated event in the repository triggers a `TransformRequest` event to text to be consumed by *T-Service* (2) saving first the original file in *Shared File Store* (1) + +When *T-Service* has performed the transformation, a `TransformReply` event is produced, that is consumed by *EventSearchService* to store the reference `targetRef` to the transformed content (3). + +Also, after issuing the transformation event, a new `IndexRequest` event is triggered to Kafka Topic `Indexation` to be consumed by *EventSearchService* (4) + +Once *EventSearchService* has a `TransformReply` and a matching `IndexRequest`, an indexation process is started by invoking *ContentTrackerService* REST API with the `targetRef` and the `txId` (5) + +*ContentTrackerService* starts the indexation process for a `txId` by using current logic (6) + +When reply is sent back to `I-Client`, current Kafka `offset` must be updated in `I-Engine` in order to be prepared for catching up the repository or re-building purposes. + +**Consequences** + +* A new dependency from Transform Service version must be included in Search Services compatibility matrix. +* A new dependency from Apache Kafka version must be included in Search Services compatibility matrix. +* It's required to create a switch in Search Services to use current Content Tracker (based in REST API invocation) or the new Content Tracker (including JMS events), mainly to preserve 5.2 compatibility. +* A new component *EventSearchService* must be developed. This component is a new *I-Service*, dockerizable and JMS / Kafka ready. +* A new component *ContentTrackerService* must be developed. This component is a new *I-Engine*, dockerizable and providing a REST API. +* Since the new indexation repository is Apache Kafka, `Transaction Id` concept must be translated to Kafka transaction system, to provide the right *offset* to Consumers when re-indexing or catching up when indexation is behind Content Services updates. +* **RISK** Currently Transform Service is not supporting several *T-Clients* for the same *Transform Service*, despite the story is being developed [ATS-208](https://issues.alfresco.com/jira/browse/ATS-208). This will exclude this alternative, as *ACS* is the only *T-Client* supported by now. Also, for a Sharding environment, more than one indexing *T-Client* can be required. + + +## Findings + +* Apache Kafka works inside ACS Deployment strategy, so it can be used alone or together with the one used by Transform Service (ApacheMQ). +* An Apache Kafka topic is a feed name to which events are published. For each topic, the Kafka cluster maintains a partitioned log. Each partition is an ordered, immutable sequence of events that is continually appended to—a structured commit log. The records in the partitions are each assigned a sequential id number called the **offset** that uniquely identifies each record within the partition. So, this `offset` can be used by I-Engines to identify the order when recovering from a previous indexation status. +* The Kafka cluster durably persists all published records whether or not they have been consumed. Kafka's performance is effectively constant with respect to data size so storing data for a long time (or even forever) is not a problem. +* Apache Kafka is supported by Amazon, so it can be the right product to store indexing events also in Amazon deployments. +* According to Apache Kafka, for better throughput, the max message size should be 10KB. So text content should not be stored within the event. + +## References + +[1] [Content Tracker](https://github.com/Alfresco/SearchServices/blob/master/alfresco-search/doc/architecture/trackers/00001-content-tracker.md) +[2] [JodConverter](https://github.com/Alfresco/alfresco-jodconverter) +[3] [PDFium](https://pdfium.googlesource.com/pdfium) +[4] [Alfresco PDF Renderer](https://git.alfresco.com/Repository/alfresco-pdf-renderer) +[5] [ImageMagick](http://www.imagemagick.org) +[6] [Apache Tika](https://tika.apache.org) +[7] [PausableThreadPoolExecutor](https://gist.github.com/warmwaffles/8534618) diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/index-sequence.png b/search-services/alfresco-search/doc/architecture/event-trackers/index-sequence.png new file mode 100644 index 0000000000000000000000000000000000000000..84b8566bca0b6c69bc3bdf720f94853543044a1f GIT binary patch literal 55507 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 uZ87h{S>&b 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 M(NfOXYT^5T02Wv|ivR!s literal 0 HcmV?d00001 From 43703ebc296190380c68d15ed092bcaf32465d28 Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Thu, 25 Apr 2019 10:04:52 +0200 Subject: [PATCH 22/37] Typos --- .../event-based-content-tracker-spike.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md index 03c169e14..bbb482650 100644 --- a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md +++ b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md @@ -215,7 +215,7 @@ Apache Kafka *PoC* has been developed in order to test different requirements: The *PoC* is available at https://github.com/aborroy/event-content-tracker-kafka -**The I-* design** +**The I-x design** The new paradigm introduced by *Kafka*, requires a set of components to be provided to the platform in order to provide the indexation process. @@ -260,7 +260,7 @@ Once *EventSearchService* has a `TransformReply` and a matching `IndexRequest`, *ContentTrackerService* starts the indexation process for a `txId` by using current logic (6) -When reply is sent back to `I-Client`, current Kafka `offset` must be updated in `I-Engine` in order to be prepared for catching up the repository or re-building purposes. +When reply is sent back to `I-Client`, current Kafka `offset` must be updated in `I-Engine` in order to be prepared for catching up the repository or re-building purposes (14) **Consequences** @@ -284,9 +284,15 @@ When reply is sent back to `I-Client`, current Kafka `offset` must be updated in ## References [1] [Content Tracker](https://github.com/Alfresco/SearchServices/blob/master/alfresco-search/doc/architecture/trackers/00001-content-tracker.md) + [2] [JodConverter](https://github.com/Alfresco/alfresco-jodconverter) + [3] [PDFium](https://pdfium.googlesource.com/pdfium) + [4] [Alfresco PDF Renderer](https://git.alfresco.com/Repository/alfresco-pdf-renderer) + [5] [ImageMagick](http://www.imagemagick.org) + [6] [Apache Tika](https://tika.apache.org) + [7] [PausableThreadPoolExecutor](https://gist.github.com/warmwaffles/8534618) From 0cc7b55cc7a67f40a64304492fe00c65ef595e5c Mon Sep 17 00:00:00 2001 From: Tom Page Date: Thu, 25 Apr 2019 09:58:29 +0100 Subject: [PATCH 23/37] Mark ADR 0006 as approved. --- .../doc/architecture/decisions/0006-release-synchronisation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/search-services/alfresco-search/doc/architecture/decisions/0006-release-synchronisation.md b/search-services/alfresco-search/doc/architecture/decisions/0006-release-synchronisation.md index 482f327da..b0db4e15d 100644 --- a/search-services/alfresco-search/doc/architecture/decisions/0006-release-synchronisation.md +++ b/search-services/alfresco-search/doc/architecture/decisions/0006-release-synchronisation.md @@ -4,7 +4,7 @@ Date: 24/04/2019 ## Status -Proposed +Approved ## Context From 4f9d4d216c8544b4e7c0e7e14c0163c2fa90d25a Mon Sep 17 00:00:00 2001 From: bamboo_auth Date: Thu, 25 Apr 2019 15:04:14 +0000 Subject: [PATCH 24/37] [maven-release-plugin] prepare release 1.4.0-IE1.2-1 --- search-services/alfresco-search/pom.xml | 4 ++-- search-services/alfresco-solrclient-lib/pom.xml | 2 +- search-services/packaging/pom.xml | 2 +- search-services/pom.xml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/search-services/alfresco-search/pom.xml b/search-services/alfresco-search/pom.xml index 0fd744193..bb49658f1 100644 --- a/search-services/alfresco-search/pom.xml +++ b/search-services/alfresco-search/pom.xml @@ -6,7 +6,7 @@ org.alfresco alfresco-search-parent - 1.4.0-SNAPSHOT + 1.4.0-IE1.2-1 ../pom.xml @@ -15,7 +15,7 @@ org.alfresco alfresco-solrclient-lib - 1.4.0-SNAPSHOT + 1.4.0-IE1.2-1 servlet-api diff --git a/search-services/alfresco-solrclient-lib/pom.xml b/search-services/alfresco-solrclient-lib/pom.xml index 18cce900a..ba3bab9c0 100644 --- a/search-services/alfresco-solrclient-lib/pom.xml +++ b/search-services/alfresco-solrclient-lib/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-search-parent - 1.4.0-SNAPSHOT + 1.4.0-IE1.2-1 diff --git a/search-services/packaging/pom.xml b/search-services/packaging/pom.xml index a58106c59..cd4dabe61 100644 --- a/search-services/packaging/pom.xml +++ b/search-services/packaging/pom.xml @@ -13,7 +13,7 @@ org.alfresco alfresco-search-parent - 1.4.0-SNAPSHOT + 1.4.0-IE1.2-1 ../pom.xml diff --git a/search-services/pom.xml b/search-services/pom.xml index eb77620b1..cf97ce124 100644 --- a/search-services/pom.xml +++ b/search-services/pom.xml @@ -7,7 +7,7 @@ 10 alfresco-search-parent - 1.4.0-SNAPSHOT + 1.4.0-IE1.2-1 pom Alfresco Solr Search parent @@ -32,7 +32,7 @@ scm:git:git@github.com:Alfresco/SearchServices.git scm:git:git@github.com:Alfresco/SearchServices.git https://github.com/Alfresco/SearchServices.git - HEAD + 1.4.0-IE1.2-1 alfresco-solrclient-lib From e83f9a4980dd5adb90bb7f71842ea26abe044f4c Mon Sep 17 00:00:00 2001 From: bamboo_auth Date: Thu, 25 Apr 2019 15:04:21 +0000 Subject: [PATCH 25/37] [maven-release-plugin] prepare for next development iteration --- search-services/alfresco-search/pom.xml | 4 ++-- search-services/alfresco-solrclient-lib/pom.xml | 2 +- search-services/packaging/pom.xml | 2 +- search-services/pom.xml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/search-services/alfresco-search/pom.xml b/search-services/alfresco-search/pom.xml index bb49658f1..0fd744193 100644 --- a/search-services/alfresco-search/pom.xml +++ b/search-services/alfresco-search/pom.xml @@ -6,7 +6,7 @@ org.alfresco alfresco-search-parent - 1.4.0-IE1.2-1 + 1.4.0-SNAPSHOT ../pom.xml @@ -15,7 +15,7 @@ org.alfresco alfresco-solrclient-lib - 1.4.0-IE1.2-1 + 1.4.0-SNAPSHOT servlet-api diff --git a/search-services/alfresco-solrclient-lib/pom.xml b/search-services/alfresco-solrclient-lib/pom.xml index ba3bab9c0..18cce900a 100644 --- a/search-services/alfresco-solrclient-lib/pom.xml +++ b/search-services/alfresco-solrclient-lib/pom.xml @@ -7,7 +7,7 @@ org.alfresco alfresco-search-parent - 1.4.0-IE1.2-1 + 1.4.0-SNAPSHOT diff --git a/search-services/packaging/pom.xml b/search-services/packaging/pom.xml index cd4dabe61..a58106c59 100644 --- a/search-services/packaging/pom.xml +++ b/search-services/packaging/pom.xml @@ -13,7 +13,7 @@ org.alfresco alfresco-search-parent - 1.4.0-IE1.2-1 + 1.4.0-SNAPSHOT ../pom.xml diff --git a/search-services/pom.xml b/search-services/pom.xml index cf97ce124..eb77620b1 100644 --- a/search-services/pom.xml +++ b/search-services/pom.xml @@ -7,7 +7,7 @@ 10 alfresco-search-parent - 1.4.0-IE1.2-1 + 1.4.0-SNAPSHOT pom Alfresco Solr Search parent @@ -32,7 +32,7 @@ scm:git:git@github.com:Alfresco/SearchServices.git scm:git:git@github.com:Alfresco/SearchServices.git https://github.com/Alfresco/SearchServices.git - 1.4.0-IE1.2-1 + HEAD alfresco-solrclient-lib From d3e8ddf1565852b579e47a2f3c6fd4da2cdcb261 Mon Sep 17 00:00:00 2001 From: eliaporciani Date: Thu, 25 Apr 2019 17:12:04 +0200 Subject: [PATCH 26/37] [SEARCH-1490] added comment to indexNonShardCascade method. --- .../java/org/alfresco/solr/SolrInformationServer.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java index 4232ea1f8..6d38cd5d8 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -1783,6 +1783,7 @@ public class SolrInformationServer implements InformationServer } } + @Override public void indexNodes(List nodes, boolean overwrite, boolean cascade) throws IOException, JSONException { @@ -1890,6 +1891,7 @@ public class SolrInformationServer implements InformationServer continue; } + AddUpdateCommand addDocCmd = new AddUpdateCommand(request); addDocCmd.overwrite = overwrite; @@ -2654,6 +2656,13 @@ public class SolrInformationServer implements InformationServer } } + + /** + * Index information of a node that does not belong to the current shard. + * These information are necessary for cascade tracker to work properly. + * The information stored are: + * nodeDocumentId, cascadeTx + */ private void indexNonShardCascade(NodeMetaData nodeMetaData) throws IOException { From 780183f97b2838dacc847ebba24dbf90cea8bad2 Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Fri, 26 Apr 2019 10:13:40 +0200 Subject: [PATCH 27/37] Changed component name "Docker SOLR" to "ContentTracker" --- .../event-trackers/content-tracker-2.png | Bin 102744 -> 102521 bytes .../event-based-content-tracker-spike.md | 16 ++++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-2.png b/search-services/alfresco-search/doc/architecture/event-trackers/content-tracker-2.png index 0d226a9303502751365a07c1e2bd579937429d31..7612452855417d4472a90933519255a8cf259a80 100644 GIT binary patch literal 102521 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

=T@WYXThQMYviB)G< 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 Cb15Y{?!KS%$OIWVC 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 WNA6kOg8c*jlb2DE&XqLz>;D0-4Y3*k literal 102744 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

** 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�UVatkzq&T0d_(Rj&k%kGoPxIlr&FmG4=fR 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 Z%QU> A new microservice, named *DockerSOLR* in the diagram, will handle transformations to text requests from Content Tracker. This service replaces previous `NodeContentGet` web script. +>> A new microservice, named *ContentTracker* in the diagram, will handle transformations to text requests from Content Tracker. This service replaces previous `NodeContentGet` web script. -Content Tracker invokes to *Docker SOLR* using HTTP REST API to start the transformation (1). +SolrInformationServer invokes to *ContentTracker* using HTTP REST API to start the transformation (1). -*Docker SOLR* invokes the repository to retrieve the source content for the node using the Remote API (2) and stores the result in the `Shared File Store` to retrieve the `sourceRef` (3). +*ContentTracker* invokes the repository to retrieve the source content for the node using the Remote API (2) and stores the result in the `Shared File Store` to retrieve the `sourceRef` (3). -After that, *Docker SOLR* creates a new *Transform Request* event to be consumed by *Transform Service* (4). +After that, *ContentTracker* creates a new *Transform Request* event to be consumed by *Transform Service* (4). *Transform Service* uses routing component to find the right *Transform Engine* (Tika, LibreOffice...) and perform the invocation with the `sourceRef` and the target media type (TXT) to the *Transform Engine* (5). Source Content is retrieved from `Shared File Store` using `sourceRef` (6) and the transformation is performed (7) and the result is stored in the `Shared File Store` to retrieve the `targetRef` (8). -After that, *Transform Engine* creates a new *Transform Reply* event (9) to be consumed by *Docker SOLR*, where the content is retrieved from `Shared File Store` using `targetRef` (10). +After that, *Transform Engine* creates a new *Transform Reply* event (9) to be consumed by *ContentTracker*, where the content is retrieved from `Shared File Store` using `targetRef` (10). -As the original request (1) has been paused while performing the transformation, *Docker SOLR* returns the TextContent Stream back and the response is delivered to Content Tracker (11). +As the original request (1) has been paused while performing the transformation, *ContentTracker* returns the TextContent Stream back and the response is delivered to Content Tracker (11). Both source and target files can be deleted from `Shared File Store` after the operation ends successfully (12,13). @@ -184,7 +184,7 @@ Both source and target files can be deleted from `Shared File Store` after the o * A new dependency from Transform Service version must be included in Search Services compatibility matrix. * It's required to create a switch in Search Services to use current Content Tracker (based in REST API invocation) or the new Content Tracker (including JMS events), mainly to preserve 5.2 compatibility. -* A new component *DockerSOLR* must be developed. This component is a new *T-Client*, dockerizable and JMS ready. Incoming threads must be paused till the JMS *TransforReply* is consumed, so some logic and control need to be added to current code [7] +* A new component *ContentTraker* must be developed. This component is a new *T-Client*, dockerizable and JMS ready. Incoming threads must be paused till the JMS *TransformReply* is consumed, so some logic and control need to be added to current code [7] * **RISK** Currently Transform Service is not supporting several *T-Clients* for the same *Transform Service*, despite the story is being developed [ATS-208](https://issues.alfresco.com/jira/browse/ATS-208). This will exclude this alternative, as *ACS* is the only *T-Client* supported by now. Also, for a Sharding environment, more than one indexing *T-Client* can be required. From 6a5d7e18a8dd7f06362ab07fdcd8f20d619de02c Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Mon, 29 Apr 2019 09:58:27 +0200 Subject: [PATCH 28/37] Gathering comments from Review Process. --- .../event-based-content-tracker-spike.md | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md index 189b00d82..1d2ebf32c 100644 --- a/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md +++ b/search-services/alfresco-search/doc/architecture/event-trackers/event-based-content-tracker-spike.md @@ -20,8 +20,8 @@ The current approach of the Content Tracker in Search Service is to query Solr f There are currently different alternatives to be considered: -1. No change to Search Service. The repository will off load the transformation to Transformation Service and pause the thread requesting the transformation until the content is transformed. -2. Introduce a new microservice that sits between Search Service and the Transformation Service. The content is off loaded to Transformation Service and the microservice stores the content for Search Service to ingest. +1. No change to Search Service. The repository will off load the transformation to Transform Service and pause the thread requesting the transformation until the content is transformed. +2. Introduce a new microservice that sits between Search Service and the Transform Service. The content is off loaded to Transform Service and the microservice stores the content for Search Service to ingest. 3. The Content Tracker that consumes content based on events This document describes and explores these alternatives to provide the background required to produce an **ADR** (Architectural Decision Record) related to this topic. @@ -65,14 +65,16 @@ Once the transformation has been performed (4) by the Content Transformer, the S Before going on with the alternatives evaluation, a quick overview of the new **Alfresco Transform Service** is provided. -Since ACS 6.0, transformations are performed by different *microservices* named as *Transform Engines* (T-Engine): +Since ACS 6.1, transformations are performed by different *microservices* named as *Transform Engines* (T-Engine): * [alfresco-docker-alfresco-pdf-renderer](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-alfresco-pdf-renderer) includes a PDFium [3] *wrapper* named Alfresco PDF Renderer [4] to provide operations on PDF files, as extracting the first page * [alfresco-docker-imagemagick](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-imagemagick) includes an ImageMagick [5] *wrapper* to provide operations on images, as generating a thumbnail * [alfresco-docker-libreoffice](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-libreoffice) includes a LibreOffice *wrapper* to provide transformation operations from a source mime type to a target mime type * [alfresco-docker-tika](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-tika) exposes Apache Tika [6] features for mime type transformation -A *Transform Engine* is a dockerized REST API providing transformation services and *renderization* operations. The [Transform Service](https://github.com/Alfresco/alfresco-transform-service) is a message router, currently working with ActiveMQ, to provide Transformation Requests to Transform Engines and to manage Transformation Replies from Transform Engines. This *router* finds the right Transform Engine for a Transformation Request depending on the source and target mime types. +>> These components are only available for Enterprise releases of Alfresco, so links in the text may be unavailable to Community users. + +A *Transform Engine* is a dockerized REST API providing Transform Services and *renderization* operations. The [Transform Service](https://github.com/Alfresco/alfresco-transform-service) is a message router, currently working with ActiveMQ, to provide Transformation Requests to Transform Engines and to manage Transformation Replies from Transform Engines. This *router* finds the right Transform Engine for a Transformation Request depending on the source and target mime types. To reduce the transit of content between the services, a dockerized [Shared File Store](https://github.com/Alfresco/alfresco-shared-file-store) REST API is used to have a single point of storage. When a transformation operation is requested, the source file is uploaded to the *Shared File Store* and when the transformation operation has been performed, the target file is uploaded also to that *Shared File Store*. Once the operation has been consumed, both source and target files are removed from *Shared File Store*. @@ -85,6 +87,8 @@ To reduce the transit of content between the services, a dockerized [Shared File * [T-Service](https://github.com/Alfresco/alfresco-transform-service): Alfresco Transform Service to route JMS Events to T-Engines * [T-Engine](https://git.alfresco.com/Repository/alfresco-docker-transformers): Transformation Engines provides transformation operations on content, consuming the source from `Shared File Store` and producing the target also in `Shared File Store`. Currently Apache Tika, LibreOffice, ImageMagick and PDF Renderer are available +>> T-Engine is currently only available for Enterprise releases of Alfresco, so links in the text may be unavailable to Community users. + **Transformation Process** *T-Client* uploads the source content to `Shared File Store` using a REST API invocation (1) to retrieve a *srcContentRef* (2). @@ -109,7 +113,7 @@ Below different alternatives for integrating Content Tracking with the New Trans ### 1 - No Change to Search Service -The repository will off load the transformation to Transformation Service and pause the thread requesting the transformation until the content is transformed. +The repository will off load the transformation to Transform Service and pause the thread requesting the transformation until the content is transformed. ![No Change to Search Service](content-tracker-1.png) @@ -123,6 +127,8 @@ The repository will off load the transformation to Transformation Service and pa * [DockerTika](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-tika) REST API Layer for *T-Engine* based in Tika * [DockerLibreoffice](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-libreoffice) REST API Layer for *T-Engine* based in LibreOffice +>> T-Engine components, like Tika and LibreOffice, are only available for Enterprise releases of Alfresco, so links in the text may be unavailable to Community users. + **Transformation Process** From SOLR side, the code remains unchanged, so the transformation to text is requested to `NodeContentGet` web script (2) as before. @@ -141,12 +147,12 @@ Both source and target files can be deleted from `Shared File Store` after the o **Consequences** -No consequences for *Search Services* are expected from applying this alternative. Probably then only one is that the whole indexing process will become slower, as the transformation is performed by the new Transform Service and contents are uploaded and downloaded using HTTP protocol. Anyway, this problem can be overcome by providing the right resources to Transform Service. +No consequences for *Search Services* are expected from applying this alternative. ### 2 - New Microservice in the Middle -Introduce a new microservice that sits between Search Service and the Transformation Service. The content is off loaded to Transformation Service and the microservice stores the content for Search Service to ingest. +Introduce a new microservice that sits between Search Service and the Transform Service. The content is off loaded to Transform Service and the microservice stores the content for Search Service to ingest. ![New Microservice in the Middle](content-tracker-2.png) @@ -160,6 +166,8 @@ Introduce a new microservice that sits between Search Service and the Transform * [DockerTika](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-tika) REST API Layer for *T-Engine* based in Tika * [DockerLibreoffice](https://git.alfresco.com/Repository/alfresco-docker-transformers/tree/master/alfresco-docker-libreoffice) REST API Layer for *T-Engine* based in LibreOffice +>> T-Engines, like Tika and LibreOffice, are only available for Enterprise releases of Alfresco, so links in the text may be unavailable to Community users. + **Transformation Process** >> A new microservice, named *ContentTracker* in the diagram, will handle transformations to text requests from Content Tracker. This service replaces previous `NodeContentGet` web script. @@ -180,6 +188,14 @@ As the original request (1) has been paused while performing the transformation, Both source and target files can be deleted from `Shared File Store` after the operation ends successfully (12,13). +**Alternative implementation** + +A variation of this scenario is to adapt the indexing flow for the transform of content "to text" to be async by using `Transform Request` / `Transform Reply`. + +*Search Service* requests Repo to transfer content into *Shared File Store* and then *Search Services* sends the async transform request to the new Transform Service. The *Search Service* then consumes the async Transform Reply (unique for each shard) in order to update the index shard. + +The main difference with original option is that *ContentTracker* does not get the original content and stores it in *Shared File Store* but sends a request to *Repository* to do that, what is better in terms of performance. + **Consequences** * A new dependency from Transform Service version must be included in Search Services compatibility matrix. @@ -289,7 +305,7 @@ When reply is sent back to `I-Client`, current Kafka `offset` must be updated in [3] [PDFium](https://pdfium.googlesource.com/pdfium) -[4] [Alfresco PDF Renderer](https://git.alfresco.com/Repository/alfresco-pdf-renderer) +[4] [Alfresco PDF Renderer](https://git.alfresco.com/Repository/alfresco-pdf-renderer) - This source code is currently only available for Enteprise users. [5] [ImageMagick](http://www.imagemagick.org) From 0db0e7511539b958cc1d3e9b82a1ee25ecf1329e Mon Sep 17 00:00:00 2001 From: agazzarini Date: Sun, 5 May 2019 11:35:12 +0200 Subject: [PATCH 29/37] [MNT-20179] Mixed TrackerState when retrieving Shard Status --- .../solr/tracker/MetadataTracker.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java index fc6eaee06..73019674d 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java @@ -37,6 +37,7 @@ import org.alfresco.repo.search.impl.QueryParserUtils; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.PropertyDefinition; import org.alfresco.service.namespace.QName; +import org.alfresco.solr.AlfrescoCoreAdminHandler; import org.alfresco.solr.AlfrescoSolrDataModel; import org.alfresco.solr.BoundedDeque; import org.alfresco.solr.InformationServer; @@ -54,6 +55,8 @@ import org.json.JSONException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static java.util.Optional.of; + /* * This tracks two things: transactions and metadata nodes * @author Ahmed Owianå @@ -196,15 +199,21 @@ public class MetadataTracker extends AbstractTracker implements Tracker */ private ShardState getShardState() { - TrackerState state = super.getTrackerState(); - - ShardState shardstate = ShardStateBuilder.shardState() + TrackerState transactionsTrackerState = super.getTrackerState(); + TrackerState changeSetsTrackerState = + of(infoSrv.getAdminHandler()) + .map(AlfrescoCoreAdminHandler::getTrackerRegistry) + .map(registry -> registry.getTrackerForCore(coreName, AclTracker.class)) + .map(Tracker::getTrackerState) + .orElse(transactionsTrackerState); + + return ShardStateBuilder.shardState() .withMaster(isMaster) .withLastUpdated(System.currentTimeMillis()) - .withLastIndexedChangeSetCommitTime(state.getLastIndexedChangeSetCommitTime()) - .withLastIndexedChangeSetId(state.getLastIndexedChangeSetId()) - .withLastIndexedTxCommitTime(state.getLastIndexedTxCommitTime()) - .withLastIndexedTxId(state.getLastIndexedTxId()) + .withLastIndexedChangeSetCommitTime(changeSetsTrackerState.getLastIndexedChangeSetCommitTime()) + .withLastIndexedChangeSetId(changeSetsTrackerState.getLastIndexedChangeSetId()) + .withLastIndexedTxCommitTime(transactionsTrackerState.getLastIndexedTxCommitTime()) + .withLastIndexedTxId(transactionsTrackerState.getLastIndexedTxId()) .withShardInstance() .withBaseUrl(infoSrv.getBaseUrl()) .withPort(infoSrv.getPort()) @@ -221,7 +230,6 @@ public class MetadataTracker extends AbstractTracker implements Tracker .endShard() .endShardInstance() .build(); - return shardstate; } /** From 6121877e7134061c02a6817c5e86a81fea66de38 Mon Sep 17 00:00:00 2001 From: agazzarini Date: Mon, 6 May 2019 22:34:25 +0200 Subject: [PATCH 30/37] [MNT-20179] Integration Test --- .../solr/tracker/MetadataTracker.java | 5 +- .../tracker/AlfrescoSolrTrackerStateTest.java | 200 ++++++++++++++++++ 2 files changed, 201 insertions(+), 4 deletions(-) create mode 100644 search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java index 73019674d..d4db2d141 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java @@ -194,10 +194,7 @@ public class MetadataTracker extends AbstractTracker implements Tracker trackTransactions(); } - /** - * @return - */ - private ShardState getShardState() + ShardState getShardState() { TrackerState transactionsTrackerState = super.getTrackerState(); TrackerState changeSetsTrackerState = diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java new file mode 100644 index 000000000..b1ba7125d --- /dev/null +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.solr.tracker; + +import org.alfresco.repo.index.shard.ShardState; +import org.alfresco.repo.search.adaptor.lucene.QueryConstants; +import org.alfresco.solr.AbstractAlfrescoSolrTests; +import org.alfresco.solr.AlfrescoCoreAdminHandler; +import org.alfresco.solr.client.Acl; +import org.alfresco.solr.client.AclChangeSet; +import org.alfresco.solr.client.AclReaders; +import org.alfresco.solr.client.Node; +import org.alfresco.solr.client.NodeMetaData; +import org.alfresco.solr.client.Transaction; +import org.apache.lucene.index.Term; +import org.apache.lucene.search.BooleanClause; +import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.LegacyNumericRangeQuery; +import org.apache.lucene.search.TermQuery; +import org.apache.solr.common.params.CoreAdminParams; +import org.apache.solr.common.params.ModifiableSolrParams; +import org.apache.solr.common.params.SolrParams; +import org.apache.solr.common.util.NamedList; +import org.apache.solr.core.CoreContainer; +import org.apache.solr.core.SolrCore; +import org.apache.solr.request.LocalSolrQueryRequest; +import org.apache.solr.request.SolrQueryRequest; +import org.apache.solr.response.SolrQueryResponse; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static java.util.Arrays.asList; +import static java.util.Collections.singletonList; +import static java.util.Optional.of; +import static java.util.Optional.ofNullable; +import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; +import static org.alfresco.solr.AlfrescoSolrUtils.getNode; +import static org.alfresco.solr.AlfrescoSolrUtils.getNodeMetaData; +import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; +import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; +import static org.junit.Assert.assertEquals; + +public class AlfrescoSolrTrackerStateTest extends AbstractAlfrescoSolrTests +{ + private static long MAX_WAIT_TIME = 80000; + + @BeforeClass + public static void beforeClass() throws Exception + { + initAlfrescoCore("schema.xml"); + } + + private Acl acl; + + @Before + public void prepare() throws Exception + { + AclChangeSet aclChangeSet = getAclChangeSet(1); + acl = getAcl(aclChangeSet); + Acl acl2 = getAcl(aclChangeSet); + + AclReaders aclReaders = getAclReaders(aclChangeSet, acl, singletonList("joel"), singletonList("phil"), null); + AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, singletonList("jim"), singletonList("phil"), null); + + indexAclChangeSet(aclChangeSet, + asList(acl, acl2), + asList(aclReaders, aclReaders2)); + + // Check for the ACL state stamp. + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!ACLTX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_ACLTXID, aclChangeSet.getId(), aclChangeSet.getId() + 1, true, false), BooleanClause.Occur.MUST)); + BooleanQuery waitForQuery = builder.build(); + waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); + } + + @Test + public void shardStateMustBeConsistentWithCoreSummaryStats() throws Exception + { + Transaction txn = getTransaction(0, 4); + + Node node1 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); + Node node2 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); + Node node3 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); + Node node4 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); + + NodeMetaData nodeMetaData1 = getNodeMetaData(node1, txn, acl, "mike", null, false); + NodeMetaData nodeMetaData2 = getNodeMetaData(node2, txn, acl, "mike", null, false); + NodeMetaData nodeMetaData3 = getNodeMetaData(node3, txn, acl, "mike", null, false); + NodeMetaData nodeMetaData4 = getNodeMetaData(node4, txn, acl, "mike", null, false); + + indexTransaction(txn, + asList(node1, node2, node3, node4), + asList(nodeMetaData1, nodeMetaData2, nodeMetaData3, nodeMetaData4)); + + makeSureTransactionHasBeenIndexed(txn.getId()); + makeSureNodesHaveBeenIndexed("mike", 4); + + SolrCore core = getCore(); + AlfrescoCoreAdminHandler adminHandler = + of(core).map(SolrCore::getCoreContainer) + .map(CoreContainer::getMultiCoreHandler) + .map(AlfrescoCoreAdminHandler.class::cast) + .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Core Admin Handler on this test core.")); + + MetadataTracker tracker = + of(adminHandler) + .map(AlfrescoCoreAdminHandler::getTrackerRegistry) + .map(registry -> registry.getTrackerForCore(core.getName(), MetadataTracker.class)) + .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Metadata tracker on this test core.")); + + + ShardState state = tracker.getShardState(); + + SolrParams params = + new ModifiableSolrParams() + .add(CoreAdminParams.CORE, core.getName()) + .add(CoreAdminParams.ACTION, "SUMMARY"); + + SolrQueryRequest request = new LocalSolrQueryRequest(core, params); + SolrQueryResponse response = new SolrQueryResponse(); + adminHandler.handleRequest(request, response); + + NamedList summary = + ofNullable(response.getValues()) + .map(values -> values.get("Summary")) + .map(NamedList.class::cast) + .map(values -> values.get(core.getName())) + .map(NamedList.class::cast) + .orElseGet(NamedList::new); + + assertEquals(state.getLastIndexedChangeSetId(), summary.get("Id for last Change Set in index")); + assertEquals(state.getLastIndexedChangeSetCommitTime(), summary.get("Last Index Change Set Commit Time")); + assertEquals(state.getLastIndexedTxCommitTime(), summary.get("Last Index TX Commit Time")); + assertEquals(state.getLastIndexedTxId(), summary.get("Id for last TX in index")); + } + + private void makeSureTransactionHasBeenIndexed(long transactionId) throws Exception + { + //Check for the TXN state stamp. + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_TXID, transactionId, transactionId + 1, true, false), BooleanClause.Occur.MUST)); + BooleanQuery waitForQuery = builder.build(); + waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); + } + + /** + * Queries the index using a token from the (dummy) text produced by the test framework. + * Once the query returns a positive result we are sure the ContentTracker + * + *

    + *
  1. + * Fetched the text content associated with the test nodes, from Alfresco + *
  2. + *
  3. + * Computed a fingerprint (using the retrieved text) for each node + *
  4. + *
  5. + * Updated the nodes definitions in the (Solr)ContentStore and in Solr + *
  6. + *
+ * + * Last but not least, we are also making sure that CommitTracker executed its cycle as well (otherwise documents + * wouldn't be searchable). + * + * @param owner the #FIELD_OWNER which will be used as an additional required query clause. + * @throws Exception in case the MAX_WAIT_TIME is reached and the node is not in results. + */ + private void makeSureNodesHaveBeenIndexed(final String owner, final int expectedCount) throws Exception + { + waitForDocCount(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), expectedCount, MAX_WAIT_TIME); + + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_OWNER, owner)), BooleanClause.Occur.MUST)); + waitForDocCount(builder.build(), expectedCount, MAX_WAIT_TIME); + } +} \ No newline at end of file From ba2e80874e88c25c54d661662460a6acd5eda84d Mon Sep 17 00:00:00 2001 From: agazzarini Date: Tue, 7 May 2019 14:49:40 +0200 Subject: [PATCH 31/37] [MNT-20179] Integration Test + some test refactor --- .../java/org/alfresco/dataload/Loader.java | 89 ----------- .../org/alfresco/solr/AlfrescoSolrUtils.java | 44 +++++- .../afts => dataload}/TestDataProvider.java | 21 ++- .../afts/qparser/FieldNameEscapingTest.java | 2 +- .../query/afts/qparser/QParserPluginTest.java | 2 +- .../AFTSDefaultTextQueryTest.java | 2 +- .../requestHandler/AFTSDisjunctionTest.java | 2 +- .../AFTSIdentifierFieldsTest.java | 2 +- .../requestHandler/AFTSRangeQueryTest.java | 2 +- .../AFTSRequestHandlerTest.java | 2 +- .../query/afts/requestHandler/MNTTest.java | 2 +- .../tracker/AlfrescoSolrTrackerStateTest.java | 138 +++++------------- ...stributedAlfrescoSolrTrackerStateTest.java | 127 ++++++++++++++++ ...butedDateMonthAlfrescoSolrTrackerTest.java | 2 + 14 files changed, 238 insertions(+), 199 deletions(-) delete mode 100644 search-services/alfresco-search/src/test/java/org/alfresco/dataload/Loader.java rename search-services/alfresco-search/src/test/java/org/alfresco/solr/{query/afts => dataload}/TestDataProvider.java (97%) create mode 100644 search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/dataload/Loader.java b/search-services/alfresco-search/src/test/java/org/alfresco/dataload/Loader.java deleted file mode 100644 index f723a4175..000000000 --- a/search-services/alfresco-search/src/test/java/org/alfresco/dataload/Loader.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2005-2017 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.dataload; - -import org.apache.solr.client.solrj.impl.HttpSolrClient; -import org.apache.solr.client.solrj.request.UpdateRequest; -import org.apache.solr.common.SolrInputDocument; - -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.time.format.DateTimeFormatter; -import java.util.Random; - -public class Loader { - - public static void main(String args[]) throws Exception { - int num = Integer.parseInt(args[0]); - int start = Integer.parseInt(args[1]); - //String url = "http://localhost:8985/solr/joel"; - String url = "http://localhost:8983/solr/collection1"; - - HttpSolrClient client = new HttpSolrClient(url); - UpdateRequest request = new UpdateRequest(); - int i = start; - LocalDateTime localDate = LocalDateTime.now(); - - Random rand = new Random(); - for(i=start; i 0); } + /** + * Asserts that the input {@link ShardState} and the CoreAdmin.SUMMARY response give the same information. + * + * @param state the {@link ShardState} instance. + * @param core the target {@link SolrCore} instance. + */ + public static void assertShardAndCoreSummaryConsistency(ShardState state, SolrCore core) { + SolrParams params = + new ModifiableSolrParams() + .add(CoreAdminParams.CORE, core.getName()) + .add(CoreAdminParams.ACTION, "SUMMARY"); -} + SolrQueryRequest request = new LocalSolrQueryRequest(core, params); + SolrQueryResponse response = new SolrQueryResponse(); + coreAdminHandler(core).handleRequest(request, response); + + NamedList summary = + ofNullable(response.getValues()) + .map(values -> values.get("Summary")) + .map(NamedList.class::cast) + .map(values -> values.get(core.getName())) + .map(NamedList.class::cast) + .orElseGet(NamedList::new); + + assertEquals(state.getLastIndexedChangeSetId(), summary.get("Id for last Change Set in index")); + assertEquals(state.getLastIndexedChangeSetCommitTime(), summary.get("Last Index Change Set Commit Time")); + assertEquals(state.getLastIndexedTxCommitTime(), summary.get("Last Index TX Commit Time")); + assertEquals(state.getLastIndexedTxId(), summary.get("Id for last TX in index")); + } + + public static AlfrescoCoreAdminHandler coreAdminHandler(SolrCore core) { + return of(core).map(SolrCore::getCoreContainer) + .map(CoreContainer::getMultiCoreHandler) + .map(AlfrescoCoreAdminHandler.class::cast) + .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Core Admin Handler on this test core.")); + } +} \ No newline at end of file diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/TestDataProvider.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/dataload/TestDataProvider.java similarity index 97% rename from search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/TestDataProvider.java rename to search-services/alfresco-search/src/test/java/org/alfresco/solr/dataload/TestDataProvider.java index 466dff0e8..4a98111b7 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/TestDataProvider.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/dataload/TestDataProvider.java @@ -16,10 +16,11 @@ * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see . */ -package org.alfresco.solr.query.afts; +package org.alfresco.solr.dataload; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; +import static java.util.stream.IntStream.range; import static org.alfresco.model.ContentModel.ASSOC_CONTAINS; import static org.alfresco.model.ContentModel.ASSOC_CHILDREN; import static org.alfresco.model.ContentModel.PROP_NAME; @@ -28,6 +29,8 @@ import static org.alfresco.service.namespace.NamespaceService.CONTENT_MODEL_1_0_ import static org.alfresco.solr.AlfrescoSolrUtils.addNode; import static org.alfresco.solr.AlfrescoSolrUtils.createGUID; import static org.alfresco.solr.AlfrescoSolrUtils.addStoreRoot; +import static org.alfresco.solr.AlfrescoSolrUtils.getNode; +import static org.alfresco.solr.AlfrescoSolrUtils.getNodeMetaData; import org.alfresco.model.ContentModel; import org.alfresco.service.cmr.repository.ChildAssociationRef; @@ -39,19 +42,27 @@ import org.alfresco.service.cmr.repository.datatype.Duration; import org.alfresco.service.namespace.QName; import org.alfresco.solr.AlfrescoSolrConstants; import org.alfresco.solr.AlfrescoSolrDataModel; +import org.alfresco.solr.client.Acl; import org.alfresco.solr.client.ContentPropertyValue; import org.alfresco.solr.client.MLTextPropertyValue; import org.alfresco.solr.client.MultiPropertyValue; +import org.alfresco.solr.client.Node; +import org.alfresco.solr.client.NodeMetaData; import org.alfresco.solr.client.PropertyValue; import org.alfresco.solr.client.StringPropertyValue; +import org.alfresco.solr.client.Transaction; import org.alfresco.util.ISO9075; +import org.apache.solr.client.solrj.io.Tuple; import org.apache.solr.core.SolrCore; import org.apache.solr.util.TestHarness; +import java.util.AbstractMap; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.stream.Collectors; /** * Test datasets provider. @@ -855,6 +866,14 @@ public class TestDataProvider implements AlfrescoSolrConstants return testProperties; } + public static Map.Entry, List> nSampleNodesWithSampleContent(Acl acl, Transaction txn, int howManyNodes) { + + List nodes = range(0, howManyNodes).mapToObj(index -> getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED)).collect(Collectors.toList()); + List metadata = nodes.stream().map(node -> getNodeMetaData(node, txn, acl, "mike", null, false)).collect(Collectors.toList()); + + return new AbstractMap.SimpleImmutableEntry<>(nodes, metadata); + } + public NodeRef newNodeRef() { return new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/qparser/FieldNameEscapingTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/qparser/FieldNameEscapingTest.java index d1d655fb3..6485fd022 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/qparser/FieldNameEscapingTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/qparser/FieldNameEscapingTest.java @@ -19,7 +19,7 @@ package org.alfresco.solr.query.afts.qparser; import org.alfresco.repo.search.adaptor.lucene.QueryConstants; -import org.alfresco.solr.query.afts.TestDataProvider; +import org.alfresco.solr.dataload.TestDataProvider; import org.alfresco.util.ISO9075; import org.junit.BeforeClass; import org.junit.Test; diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/qparser/QParserPluginTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/qparser/QParserPluginTest.java index 72858fb01..a270280e2 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/qparser/QParserPluginTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/qparser/QParserPluginTest.java @@ -30,7 +30,7 @@ import static org.alfresco.model.ContentModel.TYPE_THUMBNAIL; import org.alfresco.repo.search.adaptor.lucene.QueryConstants; import org.alfresco.service.namespace.QName; -import org.alfresco.solr.query.afts.TestDataProvider; +import org.alfresco.solr.dataload.TestDataProvider; import org.alfresco.util.CachingDateFormat; import org.apache.solr.SolrTestCaseJ4; import org.junit.BeforeClass; diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSDefaultTextQueryTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSDefaultTextQueryTest.java index cb49e7fd2..6791bbf32 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSDefaultTextQueryTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSDefaultTextQueryTest.java @@ -22,7 +22,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.solr.client.PropertyValue; import org.alfresco.solr.client.StringPropertyValue; -import org.alfresco.solr.query.afts.TestDataProvider; +import org.alfresco.solr.dataload.TestDataProvider; import org.junit.BeforeClass; import org.junit.Test; diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSDisjunctionTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSDisjunctionTest.java index e42d9f9d7..8462d00e3 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSDisjunctionTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSDisjunctionTest.java @@ -30,7 +30,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.solr.client.PropertyValue; import org.alfresco.solr.client.StringPropertyValue; -import org.alfresco.solr.query.afts.TestDataProvider; +import org.alfresco.solr.dataload.TestDataProvider; import org.junit.BeforeClass; import org.junit.Test; diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSIdentifierFieldsTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSIdentifierFieldsTest.java index 8a207e463..2dc910b8c 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSIdentifierFieldsTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSIdentifierFieldsTest.java @@ -27,7 +27,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.solr.client.PropertyValue; import org.alfresco.solr.client.StringPropertyValue; -import org.alfresco.solr.query.afts.TestDataProvider; +import org.alfresco.solr.dataload.TestDataProvider; import org.junit.BeforeClass; import org.junit.Test; diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSRangeQueryTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSRangeQueryTest.java index 6c303b505..ed38a5006 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSRangeQueryTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSRangeQueryTest.java @@ -28,7 +28,7 @@ import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.solr.client.PropertyValue; import org.alfresco.solr.client.StringPropertyValue; -import org.alfresco.solr.query.afts.TestDataProvider; +import org.alfresco.solr.dataload.TestDataProvider; import org.alfresco.util.Pair; import org.junit.BeforeClass; import org.junit.Test; diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSRequestHandlerTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSRequestHandlerTest.java index 255c655cd..b6f818791 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSRequestHandlerTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/AFTSRequestHandlerTest.java @@ -10,7 +10,7 @@ import org.alfresco.repo.search.adaptor.lucene.QueryConstants; import org.alfresco.service.namespace.QName; import org.alfresco.solr.AlfrescoSolrDataModel; import org.alfresco.solr.SolrInformationServer; -import org.alfresco.solr.query.afts.TestDataProvider; +import org.alfresco.solr.dataload.TestDataProvider; import org.apache.lucene.util.LuceneTestCase; import org.apache.solr.SolrTestCaseJ4; import org.junit.BeforeClass; diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/MNTTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/MNTTest.java index 25b9c9e9d..a7b0dd5df 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/MNTTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/query/afts/requestHandler/MNTTest.java @@ -1,6 +1,6 @@ package org.alfresco.solr.query.afts.requestHandler; -import org.alfresco.solr.query.afts.TestDataProvider; +import org.alfresco.solr.dataload.TestDataProvider; import org.junit.BeforeClass; import org.junit.Test; diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java index b1ba7125d..b3195d50d 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java @@ -19,7 +19,6 @@ package org.alfresco.solr.tracker; -import org.alfresco.repo.index.shard.ShardState; import org.alfresco.repo.search.adaptor.lucene.QueryConstants; import org.alfresco.solr.AbstractAlfrescoSolrTests; import org.alfresco.solr.AlfrescoCoreAdminHandler; @@ -29,135 +28,98 @@ import org.alfresco.solr.client.AclReaders; import org.alfresco.solr.client.Node; import org.alfresco.solr.client.NodeMetaData; import org.alfresco.solr.client.Transaction; +import org.alfresco.solr.dataload.TestDataProvider; +import org.apache.lucene.document.LongPoint; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.LegacyNumericRangeQuery; import org.apache.lucene.search.TermQuery; -import org.apache.solr.common.params.CoreAdminParams; -import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.params.SolrParams; -import org.apache.solr.common.util.NamedList; -import org.apache.solr.core.CoreContainer; import org.apache.solr.core.SolrCore; -import org.apache.solr.request.LocalSolrQueryRequest; -import org.apache.solr.request.SolrQueryRequest; -import org.apache.solr.response.SolrQueryResponse; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import java.util.List; +import java.util.Map; + import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static java.util.Optional.of; -import static java.util.Optional.ofNullable; +import static org.alfresco.solr.AlfrescoSolrUtils.MAX_WAIT_TIME; +import static org.alfresco.solr.AlfrescoSolrUtils.assertShardAndCoreSummaryConsistency; +import static org.alfresco.solr.AlfrescoSolrUtils.coreAdminHandler; import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; -import static org.alfresco.solr.AlfrescoSolrUtils.getNode; -import static org.alfresco.solr.AlfrescoSolrUtils.getNodeMetaData; import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; -import static org.junit.Assert.assertEquals; +/** + * A partial state of {@link org.alfresco.solr.TrackerState} is exposed through two interfaces: AdminHandler.SUMMARY and + * {@link MetadataTracker#getShardState}. + * + * This test makes sure that state is consistent across the two mentioned approaches. That is, properties returned by the + * Core SUMMARY must have the same value of the same properties in the ShardState. + * + * @author agazzarini + */ public class AlfrescoSolrTrackerStateTest extends AbstractAlfrescoSolrTests { - private static long MAX_WAIT_TIME = 80000; - @BeforeClass public static void beforeClass() throws Exception { initAlfrescoCore("schema.xml"); } - private Acl acl; - @Before public void prepare() throws Exception { AclChangeSet aclChangeSet = getAclChangeSet(1); - acl = getAcl(aclChangeSet); + + Acl acl = getAcl(aclChangeSet); Acl acl2 = getAcl(aclChangeSet); AclReaders aclReaders = getAclReaders(aclChangeSet, acl, singletonList("joel"), singletonList("phil"), null); AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, singletonList("jim"), singletonList("phil"), null); - indexAclChangeSet(aclChangeSet, - asList(acl, acl2), - asList(aclReaders, aclReaders2)); + indexAclChangeSet(aclChangeSet, asList(acl, acl2), asList(aclReaders, aclReaders2)); - // Check for the ACL state stamp. BooleanQuery.Builder builder = new BooleanQuery.Builder(); builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!ACLTX")), BooleanClause.Occur.MUST)); builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_ACLTXID, aclChangeSet.getId(), aclChangeSet.getId() + 1, true, false), BooleanClause.Occur.MUST)); BooleanQuery waitForQuery = builder.build(); waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); + + int howManyTestNodes = 4; + + Transaction txn = getTransaction(0, howManyTestNodes); + Map.Entry, List> data = TestDataProvider.nSampleNodesWithSampleContent(acl, txn, howManyTestNodes); + + indexTransaction(txn, data.getKey(), data.getValue()); + + makeSureTransactionHasBeenIndexed(txn.getId()); + makeSureNodesHaveBeenIndexed(data.getKey().size()); } @Test - public void shardStateMustBeConsistentWithCoreSummaryStats() throws Exception + @SuppressWarnings("deprecated") + public void shardStateMustBeConsistentWithCoreSummaryStats() { - Transaction txn = getTransaction(0, 4); - - Node node1 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); - Node node2 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); - Node node3 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); - Node node4 = getNode(txn, acl, Node.SolrApiNodeStatus.UPDATED); - - NodeMetaData nodeMetaData1 = getNodeMetaData(node1, txn, acl, "mike", null, false); - NodeMetaData nodeMetaData2 = getNodeMetaData(node2, txn, acl, "mike", null, false); - NodeMetaData nodeMetaData3 = getNodeMetaData(node3, txn, acl, "mike", null, false); - NodeMetaData nodeMetaData4 = getNodeMetaData(node4, txn, acl, "mike", null, false); - - indexTransaction(txn, - asList(node1, node2, node3, node4), - asList(nodeMetaData1, nodeMetaData2, nodeMetaData3, nodeMetaData4)); - - makeSureTransactionHasBeenIndexed(txn.getId()); - makeSureNodesHaveBeenIndexed("mike", 4); - SolrCore core = getCore(); - AlfrescoCoreAdminHandler adminHandler = - of(core).map(SolrCore::getCoreContainer) - .map(CoreContainer::getMultiCoreHandler) - .map(AlfrescoCoreAdminHandler.class::cast) - .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Core Admin Handler on this test core.")); MetadataTracker tracker = - of(adminHandler) - .map(AlfrescoCoreAdminHandler::getTrackerRegistry) - .map(registry -> registry.getTrackerForCore(core.getName(), MetadataTracker.class)) - .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Metadata tracker on this test core.")); + of(coreAdminHandler(core)) + .map(AlfrescoCoreAdminHandler::getTrackerRegistry) + .map(registry -> registry.getTrackerForCore(core.getName(), MetadataTracker.class)) + .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Metadata tracker on this test core.")); - ShardState state = tracker.getShardState(); - - SolrParams params = - new ModifiableSolrParams() - .add(CoreAdminParams.CORE, core.getName()) - .add(CoreAdminParams.ACTION, "SUMMARY"); - - SolrQueryRequest request = new LocalSolrQueryRequest(core, params); - SolrQueryResponse response = new SolrQueryResponse(); - adminHandler.handleRequest(request, response); - - NamedList summary = - ofNullable(response.getValues()) - .map(values -> values.get("Summary")) - .map(NamedList.class::cast) - .map(values -> values.get(core.getName())) - .map(NamedList.class::cast) - .orElseGet(NamedList::new); - - assertEquals(state.getLastIndexedChangeSetId(), summary.get("Id for last Change Set in index")); - assertEquals(state.getLastIndexedChangeSetCommitTime(), summary.get("Last Index Change Set Commit Time")); - assertEquals(state.getLastIndexedTxCommitTime(), summary.get("Last Index TX Commit Time")); - assertEquals(state.getLastIndexedTxId(), summary.get("Id for last TX in index")); + assertShardAndCoreSummaryConsistency(tracker.getShardState(), core); } private void makeSureTransactionHasBeenIndexed(long transactionId) throws Exception { - //Check for the TXN state stamp. BooleanQuery.Builder builder = new BooleanQuery.Builder(); builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_TXID, transactionId, transactionId + 1, true, false), BooleanClause.Occur.MUST)); @@ -165,36 +127,14 @@ public class AlfrescoSolrTrackerStateTest extends AbstractAlfrescoSolrTests waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); } - /** - * Queries the index using a token from the (dummy) text produced by the test framework. - * Once the query returns a positive result we are sure the ContentTracker - * - *
    - *
  1. - * Fetched the text content associated with the test nodes, from Alfresco - *
  2. - *
  3. - * Computed a fingerprint (using the retrieved text) for each node - *
  4. - *
  5. - * Updated the nodes definitions in the (Solr)ContentStore and in Solr - *
  6. - *
- * - * Last but not least, we are also making sure that CommitTracker executed its cycle as well (otherwise documents - * wouldn't be searchable). - * - * @param owner the #FIELD_OWNER which will be used as an additional required query clause. - * @throws Exception in case the MAX_WAIT_TIME is reached and the node is not in results. - */ - private void makeSureNodesHaveBeenIndexed(final String owner, final int expectedCount) throws Exception + private void makeSureNodesHaveBeenIndexed(int expectedCount) throws Exception { waitForDocCount(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), expectedCount, MAX_WAIT_TIME); BooleanQuery.Builder builder = new BooleanQuery.Builder(); builder.add(new BooleanClause(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), BooleanClause.Occur.MUST)); - builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_OWNER, owner)), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_OWNER, "mike")), BooleanClause.Occur.MUST)); waitForDocCount(builder.build(), expectedCount, MAX_WAIT_TIME); } } \ No newline at end of file diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java new file mode 100644 index 000000000..7f5668184 --- /dev/null +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java @@ -0,0 +1,127 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.solr.tracker; + +import static java.util.Arrays.asList; +import static java.util.Collections.singletonList; +import static java.util.Optional.of; +import static org.alfresco.solr.AlfrescoSolrUtils.MAX_WAIT_TIME; +import static org.alfresco.solr.AlfrescoSolrUtils.assertShardAndCoreSummaryConsistency; +import static org.alfresco.solr.AlfrescoSolrUtils.coreAdminHandler; +import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; +import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; +import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; + +import org.alfresco.repo.search.adaptor.lucene.QueryConstants; +import org.alfresco.solr.AbstractAlfrescoDistributedTest; +import org.alfresco.solr.AlfrescoCoreAdminHandler; +import org.alfresco.solr.client.Acl; +import org.alfresco.solr.client.AclChangeSet; +import org.alfresco.solr.client.AclReaders; +import org.alfresco.solr.client.Node; +import org.alfresco.solr.client.NodeMetaData; +import org.alfresco.solr.client.Transaction; +import org.alfresco.solr.dataload.TestDataProvider; +import org.apache.lucene.document.LongPoint; +import org.apache.lucene.index.Term; +import org.apache.lucene.search.BooleanClause; +import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.LegacyNumericRangeQuery; +import org.apache.lucene.search.TermQuery; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.List; +import java.util.Map; + +/** + * A partial state of {@link org.alfresco.solr.TrackerState} is exposed through two interfaces: AdminHandler.SUMMARY and + * {@link MetadataTracker#getShardState}. + * This test makes sure that state is consistent across the two mentioned approaches. That is, properties returned by the + * Core SUMMARY must have the same value of the same properties in the ShardState. + * + * Note that this is the distributed version of {@link AlfrescoSolrTrackerStateTest}. + * + * @author agazzarini + */ +public class DistributedAlfrescoSolrTrackerStateTest extends AbstractAlfrescoDistributedTest +{ + @BeforeClass + private static void initData() throws Throwable + { + int howManyShards = 5; + int howManyNodes = 15; + + initSolrServers(howManyShards, getClassName(),null); + + AclChangeSet aclChangeSet = getAclChangeSet(1); + + Acl acl = getAcl(aclChangeSet); + Acl acl2 = getAcl(aclChangeSet); + + AclReaders aclReaders = getAclReaders(aclChangeSet, acl, singletonList("joel"), singletonList("phil"), null); + AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, singletonList("jim"), singletonList("phil"), null); + + indexAclChangeSet(aclChangeSet, asList(acl, acl2), asList(aclReaders, aclReaders2)); + + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!ACLTX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LongPoint.newExactQuery(QueryConstants.FIELD_S_ACLTXID, aclChangeSet.getId()), BooleanClause.Occur.MUST)); + BooleanQuery waitForQuery = builder.build(); + waitForDocCountAllCores(waitForQuery, 1, MAX_WAIT_TIME); + + Transaction txn = getTransaction(0, howManyNodes); + Map.Entry, List> data = TestDataProvider.nSampleNodesWithSampleContent(acl, txn, howManyNodes); + + indexTransaction(txn, data.getKey(), data.getValue()); + builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LongPoint.newExactQuery(QueryConstants.FIELD_S_TXID, txn.getId()), BooleanClause.Occur.MUST)); + waitForQuery = builder.build(); + + waitForDocCountAllCores(waitForQuery, 1, MAX_WAIT_TIME); + waitForDocCountAllCores(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), howManyNodes, MAX_WAIT_TIME); + } + + @AfterClass + private static void destroyData() + { + dismissSolrServers(); + } + + @Test + public void shardStateMustBeConsistentWithCoreSummaryStats() + { + putHandleDefaults(); + + getJettyCores(solrShards).forEach(core -> { + MetadataTracker tracker = + of(coreAdminHandler(core)) + .map(AlfrescoCoreAdminHandler::getTrackerRegistry) + .map(registry -> registry.getTrackerForCore(core.getName(), MetadataTracker.class)) + .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Metadata tracker on this test core.")); + + assertShardAndCoreSummaryConsistency(tracker.getShardState(), core); + }); + } +} \ No newline at end of file diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedDateMonthAlfrescoSolrTrackerTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedDateMonthAlfrescoSolrTrackerTest.java index 9bae66994..ed5e49fb2 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedDateMonthAlfrescoSolrTrackerTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedDateMonthAlfrescoSolrTrackerTest.java @@ -118,7 +118,9 @@ public class DistributedDateMonthAlfrescoSolrTrackerTest extends AbstractAlfresc Date[] dates = new Date[5]; Calendar cal = new GregorianCalendar(); + cal.setTimeZone(TimeZone.getTimeZone("UTC")); for (int i = 0; i < dates.length; i++) { + cal.set(1980, i, 21); dates[i] = cal.getTime(); } From 7d2800057dd0cfd0adbb50419aced92b29500f0a Mon Sep 17 00:00:00 2001 From: agazzarini Date: Tue, 7 May 2019 15:19:07 +0200 Subject: [PATCH 32/37] [MNT-20179] Teardown after test execution --- .../solr/tracker/AlfrescoSolrTrackerStateTest.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java index b3195d50d..c7afab527 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java @@ -27,6 +27,7 @@ import org.alfresco.solr.client.AclChangeSet; import org.alfresco.solr.client.AclReaders; import org.alfresco.solr.client.Node; import org.alfresco.solr.client.NodeMetaData; +import org.alfresco.solr.client.SOLRAPIQueueClient; import org.alfresco.solr.client.Transaction; import org.alfresco.solr.dataload.TestDataProvider; import org.apache.lucene.document.LongPoint; @@ -36,6 +37,7 @@ import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.LegacyNumericRangeQuery; import org.apache.lucene.search.TermQuery; import org.apache.solr.core.SolrCore; +import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -72,6 +74,16 @@ public class AlfrescoSolrTrackerStateTest extends AbstractAlfrescoSolrTests initAlfrescoCore("schema.xml"); } + @After + public void clearQueue() throws Exception { + SOLRAPIQueueClient.nodeMetaDataMap.clear(); + SOLRAPIQueueClient.transactionQueue.clear(); + SOLRAPIQueueClient.aclChangeSetQueue.clear(); + SOLRAPIQueueClient.aclReadersMap.clear(); + SOLRAPIQueueClient.aclMap.clear(); + SOLRAPIQueueClient.nodeMap.clear(); + } + @Before public void prepare() throws Exception { From 3c06a5ed4fa6abd50e7a5c6d4a56b961749d58c1 Mon Sep 17 00:00:00 2001 From: agazzarini Date: Tue, 7 May 2019 16:25:43 +0200 Subject: [PATCH 33/37] [ MNT-20179] Restored SSL annotation --- .../solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java index 7f5668184..5d61bdec3 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java @@ -46,6 +46,7 @@ import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.LegacyNumericRangeQuery; import org.apache.lucene.search.TermQuery; +import org.apache.solr.SolrTestCaseJ4; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -63,6 +64,7 @@ import java.util.Map; * * @author agazzarini */ +@SolrTestCaseJ4.SuppressSSL public class DistributedAlfrescoSolrTrackerStateTest extends AbstractAlfrescoDistributedTest { @BeforeClass From dbc06e4887375e236fe032a02a71ea785bd4cb40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 8 May 2019 00:14:18 +0000 Subject: [PATCH 34/37] Bump randomizedtesting-runner from 2.7.2 to 2.7.3 Bumps randomizedtesting-runner from 2.7.2 to 2.7.3. Signed-off-by: dependabot[bot] --- search-services/alfresco-search/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/search-services/alfresco-search/pom.xml b/search-services/alfresco-search/pom.xml index 0fd744193..05d494c9a 100644 --- a/search-services/alfresco-search/pom.xml +++ b/search-services/alfresco-search/pom.xml @@ -108,7 +108,7 @@ com.carrotsearch.randomizedtesting randomizedtesting-runner - 2.7.2 + 2.7.3 test From 93e87d253cb8f4ac15ef80dd094367eeeec1f982 Mon Sep 17 00:00:00 2001 From: agazzarini Date: Wed, 8 May 2019 11:22:02 +0200 Subject: [PATCH 35/37] [MNT-20179] TrackerState (current and proposal) design document --- .../tracker-state/00001-tracker-state.md | 206 ++++++++++++++++++ .../trackers_memento_class_diagram.png | Bin 0 -> 311182 bytes 2 files changed, 206 insertions(+) create mode 100644 search-services/alfresco-search/doc/architecture/tracker-state/00001-tracker-state.md create mode 100644 search-services/alfresco-search/doc/architecture/tracker-state/trackers_memento_class_diagram.png diff --git a/search-services/alfresco-search/doc/architecture/tracker-state/00001-tracker-state.md b/search-services/alfresco-search/doc/architecture/tracker-state/00001-tracker-state.md new file mode 100644 index 000000000..69d83b183 --- /dev/null +++ b/search-services/alfresco-search/doc/architecture/tracker-state/00001-tracker-state.md @@ -0,0 +1,206 @@ +## Tracker State + +![Completeness Badge](https://img.shields.io/badge/Document_Level-Proposal-yellow.svg?style=flat-square) + +### Purpose and current implementation +The _org.alfresco.solr.TrackerState_ class represents the state of a given tracker, with several information including the state of the tracker itself and some other data the system needs to remember about the ongoing tracking process. +The state definition within the _TrackerState_ is actually the union of all attributes needed by the all trackers during their lifecycle. + +The following table illustrates the member instances currently defined in the _TrackerState_, together with the indication of the tracker which makes use of that specific information. + +| Property | READ | WRITE | Notes| +| --------------------------|:----------:|------------------------------------|:------------| +|lastChangeSetIdOnServer|ACLTracker|ACLTracker  | | +|lastChangeSetCommitTimeOnServer|ACLTracker|ACLTracker| | +|lastIndexedChangeSetId*|ACLTracker, MetadataTracker::getShardState|ACLTracker| | +|lastIndexedTxCommitTime|MetadataTracker|MetadataTracker| | +|lastIndexedTxId|MetadataTracker|MetadataTracker| | +|lastIndexedChangeSetCommitTime*|AclTracker, MetadataTracker, AbstractTracker::continueState|AclTracker| | +|lastTxCommitTimeOnServer|MetadataTracker|N.A.| | +|lastTxIdOnServer|MetadataTracker|MetadataTracker| | +|lastIndexedTxIdBeforeHoles|MetadataTracker|N.A.| | +|lastIndexedChangeSetIdBeforeHoles|AclTracker| N.A.| | +|running|ALL|ALL|| +|checkedFirstTransactionTime|MetadataTracker|ACLTracker, MetadataTracker| | +|checkedFirstAclTransactionTime|ACLTracker|ACLTracker| | +|checkedLastAclTransactionTime|ACLTracker|ACLTracker| | +|checkedLastTransactionTime|MetadataTracker|MetadataTracker| | +|check|AclTrackerTest|AbstractTracker, CoreAdminHandler::actionCHECK| It seems used only for ACL test purposes, but it is set on the superclass on all trackers| +|trackerCycles|ALL |ALL | | +|timeToStopIndexing|AclTracker, MetadataTracker|MetadataTrackerTest, SolrInformationServer::getTrackerInitialState |Since it is set in the initial tracker state, it is done for all trackers, but actually it is never set again so the MetadataTracker and AclTracker always use the initial value.  | +|lastGoodChangeSetCommitTimeInIndex|AclTracker|AclTracker, SolrInformationServer::getTrackerInitialState, SolrInformatonServer::continueState|SolrInformatioServer::continueState is called on every tracker. However, only the AclTracker is using this information.  | +|lastGoodTxCommitTimeInIndex|MetadataTracker|MetadataTracker, SolrInformationServer::getTrackerInitialState, SolrInformatonServer::continueState| See above| +|timeBeforeWhichThereCanBeNoHoles|N.A.| SolrInformationServer::getTrackerInitialState, SolrInformatonServer::continueState | This is set for all trackers but never read.| +|lastStartTime| ALL|ALL || + +_* as part of the MNT-20179, which is being implemented at time of writing, the MetadataTracker won't access anymore to this attribute_ + +From the table above we can see there are some intersections between attributes and trackers; specifically we have three different scenarios: + +- n writers, 1 reader (e.g. lastGoodChangeSetCommitTimeInIndex) +- n readers, 1 writer (e.g. lastIndexedChangeSetCommitTime, lastIndexedChangeSetId) +- n readers, n writers (timeToStopIndexing) + +These scenarios suggest the "unified" approach used within the _TrackerState_ could be improved. Specifically: + +- n writers, 1 reader: dangerous, we need to clarify if the usage of the same property is disjoint or the two writers are supposed to insist on the same property instance/value. +- n readers, 1 writer: this could be ok, because only one tracker is mutating the property value. +- n readers, n writers: this is the worst scenario; however, it seems only one property (timeToStopIndexing) falls here so the context should be easy to understand and address. + +### Thoughts about the current implementation +The current implementation of the _TrackerState_ contains a "mix" of information that can be roughly classified in two categories: + +- things that below to the "stateful" context of the tracker lifecycle (e.g. running, checked, trackerCycles): as a side note, in a refactoring context we need to consider that each tracker instance has also some attribute which belongs to this category but it's not part of the _TrackerState_ (e.g. rollback) +- things we want to remember across the tracker cycles (e.g. lastIndexedTxId, checkedFirstTransactionTime) + +The first category is tied to a tracker instance and therefore can be considered part, strictly speaking, of the tracker state. +The second category instead, seems to be something shared across the trackers; that is, a place where each tracker (actually only the _MetadataTracker_ and the _AclTracker_ plays a role in this context) can record some information during a tracking cycle. + +The _TrackerState_ creation and initialisation is done in _SolrInformationServer_ (a singleton within each _SolrCore_); at the end of the subsystem initialisation, each tracker has an its own _TrackerState_ instance. Looking at the two points above, +that dedicated instance sounds reasonable for the first category (the stateful context of a tracker) while it doesn't make so much sense for the second one. This because each tracker owns a private, decoupled instance of the tracker state but: + +- in the best case it will use only a disjoint and partial portion of that class +- in the worst case it will never use that + +As consequence of that, a proper design should divide those two responsibilities, by providing a private copy of the state and a shared instance composed by things we need to remember across tracker cycles. +This approach is the main driver of the proposal described in the next section. + +### Proposal +As explained above, the proposal would divide the current tracker state in two separate set of attributes. + +#### Tracker State +This set includes things that are strictly related with the current state of a tracker (e.g. running, isInRollback, isInMaintenance). These properties are specific for each tracker, they could be expressed in two ways: + +- as instance properties of each tracker (in _AbstractTracker_ or in the concete tracker class) +- using a State Pattern [1], in order to formalize the behaviour that a given tracker should have when it is in a specific state. + +Using the first approach, variables like "running", "check", "trackerCycles" should be moved and managed directly or indirectly (_AbstractTracker_) in the tracker class. Each tracker instance must own a private copy of that variable because it can differ between trackers (e.g. _MetadataTracker_ could be running while _AclTracker_ couldn't) + +```Java + +public abstract class AbstractTracker { + + private boolean running; + + ... + + + public boolean isRunning() { + return running; + } + + public void doTrack() { + + if (isRunning) { + // Do something + } else { + // Dom something else + } + + } +} + +``` + +The second approach would transform each tracker in a Finite State Machine (FSM) [2]. Since at the moment the different behaviour is spread across the code with a relevant amount of conditional statements, this approach requires more analysis and implementation effort. +The concrete Tracker (or the _AbstractTracker_) would act as a controller which would orchestrate and move between available states, in order to execute the tracking logic. + +#### Tracker Memory/Memento +This set of attributes includes all things we need to remember across tracker cycles. The term "Memento" is taken from the popular GoF Design Pattern [3] +but in this context the usage is slightly different because here we aren't interested in retain a captured state for doing things like undo/redo operations: the purpose is to persist a set of information between one tracking cycle and another. + +Under this perspective, the Memento/Memory should act as a singleton across all trackers: that is, there should be only one instance for each _SolrCore_. This class will contain all information copied from the _TrackerState_ related with ACLs and Transactions: + +``` +public class TrackersMemento { + + // ACLs and Transactions are two private inner classes used just for classifying things within + // this class. They are not exposed and the caller sees only the TrackersMemory public interface (getters and + // setters) + + private class ACLs { + private long lastChangeSetIdOnServer; + private long lastChangeSetCommitTimeOnServer; + private long lastIndexedChangeSetId; + private long lastIndexedChangeSetCommitTime; + private long lastIndexedChangeSetIdBeforeHoles = -1; + + private volatile boolean checkedFirstAclTransactionTime; + private volatile boolean checkedLastAclTransactionTime; + + private long lastGoodChangeSetCommitTimeInIndex; + } + + private class Transactions { + private long lastIndexedTxCommitTime; + private long lastIndexedTxId; + private long lastTxCommitTimeOnServer; + private long lastTxIdOnServer; + private long lastIndexedTxIdBeforeHoles = -1; + + private boolean checkedFirstTransactionTime; + + private boolean checkedLastTransactionTime; + + private long lastGoodTxCommitTimeInIndex; + } + + private final ACLs acls = new ACLs(); + private final Transactions transactions = new Transactions(); + + // getter and setter at hosting instance level + +``` + +With this class, the tracker subsystem will expose a centralized view of things that need to be recorded. This is the first important difference: +in the current implementation each tracker has a copy of (for example) "lastIndexedTxId" regardless if it uses it or not. + +Once we got the centralization, a proper design would enforce/formalize the read/write access to that properties. The purpose is to communicate in a formal way + +- who is allowed to write what +- who is allowed to read what + +So, looking at the table at the beginning of this document, after removing things belonging to the tracker state (section above), +we can group the remaining properties using two categories (ACLs and Transactions) which can be furtherly split from the access perspective (Read and/or Write). + +So the idea is to create four interfaces, all implemented by the _TrackersMemento_ which would enable + +- ACL properties read access (e.g. _ReadableOnlyAclsMemento_) which will contains all getters related with the _TrackersMemento::ACLs_ properties +- ACL properties write (and read) access (e.g. _AclsMemento_ extends _ReadableOnlyAclsMemento_) which will contains all setters related with the _TrackersMemento::ACLs_ properties +- Transaction properties read access (e.g. _ReadableOnlyTransactionsMemento_) which will contains all getters related with the _TrackersMemento::Transations_ properties +- Transaction properties write (and read) access (e.g. _TransactionsMemento_ extends _ReadableOnlyTransactionsMemento_) which will contains all setters related with the _TrackersMemento::Transactions_ properties + +The _TrackersMemento_ would implement all four interfaces: + +``` + +// ReadableOnly intefaces are automatically inherited + +public class TrackersMemento implements AclsMemento, TransactionsMemento { +``` + +![TrackersMemento Class Diagram](trackers_memento_class_diagram.png) + +Using the class hierarchy above, we could improve the formalisation of the different kind of access each tracker would require. Specifically: + +- the memento instance could be available or not in each tracker. That probably means it doesn't make sense to have it available at the _AbstractTracker_ level. +- a tracker or a component, depending on its requirements and behaviour, could have a reference to a readable and/or writable (ACLs and/or Transactions) memento. + +For example: + +- _ModelTracker_ won't have any reference because it doesn't need it +- _ACLTracker_ would see an _AclsMemento_ with full RW access but a Read-Only view of the _TransactionsMemento_ +- _CoreAdminHandler_ would have a Read-Only view of both ACLs and Transations memento +- _SolrInformationServer_ would a a full access to the _TrackersMemento_, because it create and initialise it + +### Single or Multi Core +Being a Singleton, the _TrackerMemento_ could be also designed for storing/serving data belonging to more than one core. +This could be useful if the same Solr instance hosts multiple core (e.g. alfresco, archive). In that case the access interfaces and the access pattern would be slightly different +because it should be implemented for taking in account also the core name as input parameter. + +The resulting implementation should provide a 1-n cardinality relationship (by means of a dictionary, for example) between the memento instance and the internal stored sets of attributes belonging to different cores. + +*** +[1] [State Pattern](https://en.wikipedia.org/wiki/State_pattern) +[2] [Finite State Machine](https://en.wikipedia.org/wiki/Finite-state_machine) +[3] [Memento](https://en.wikipedia.org/wiki/Memento_pattern) \ No newline at end of file diff --git a/search-services/alfresco-search/doc/architecture/tracker-state/trackers_memento_class_diagram.png b/search-services/alfresco-search/doc/architecture/tracker-state/trackers_memento_class_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b9183a860f4f55950e6ce99064ef469adb51884a GIT binary patch literal 311182 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

d*HsW$(HkPaYMB=f=DIthsdilgp}4$0V>)G0tHf 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 z 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 Date: Thu, 9 May 2019 12:30:17 +0200 Subject: [PATCH 36/37] [MNT-20179] getShardState() Javadoc --- .../alfresco/solr/tracker/MetadataTracker.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java index d4db2d141..974994bd1 100644 --- a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/MetadataTracker.java @@ -194,6 +194,23 @@ public class MetadataTracker extends AbstractTracker implements Tracker trackTransactions(); } + /** + * The {@link ShardState}, as the name suggests, encapsulates/stores the state of the shard which hosts this + * {@link MetadataTracker} instance. + * + * The {@link ShardState} is primarily used in two places: + * + *

    + *
  • Transaction tracking: (see {@link #trackTransactions()}): for pulling/tracking transactions from Alfresco
  • + *
  • + * DynamicSharding: when the {@link MetadataTracker} is running on a slave instance it doesn't actually act + * as a tracker, it calls Alfresco to register the state of the node (the shard) without pulling any transactions. + * As consequence of that, Alfresco will be aware about the shard which will be included in subsequent queries. + *
  • + *
+ * + * @return the {@link ShardState} instance which stores the current state of the hosting shard. + */ ShardState getShardState() { TrackerState transactionsTrackerState = super.getTrackerState(); From 89b030cb0ea360f2f1b1c1c27734b776a965456d Mon Sep 17 00:00:00 2001 From: agazzarini Date: Thu, 9 May 2019 18:17:41 +0200 Subject: [PATCH 37/37] [MNT-20179] test and distributed test improved --- .../tracker/AlfrescoSolrTrackerStateTest.java | 153 +++++++++++------- ...stributedAlfrescoSolrTrackerStateTest.java | 125 ++++++++++---- 2 files changed, 191 insertions(+), 87 deletions(-) diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java index c7afab527..d37d8ab99 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/AlfrescoSolrTrackerStateTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Alfresco Software Limited. + * Copyright (C) 2005-2019 Alfresco Software Limited. * * This file is part of Alfresco * @@ -19,6 +19,22 @@ package org.alfresco.solr.tracker; +import static java.util.Arrays.asList; +import static java.util.Collections.singletonList; +import static java.util.Optional.of; +import static java.util.stream.IntStream.range; +import static org.alfresco.solr.AlfrescoSolrUtils.MAX_WAIT_TIME; +import static org.alfresco.solr.AlfrescoSolrUtils.assertShardAndCoreSummaryConsistency; +import static org.alfresco.solr.AlfrescoSolrUtils.coreAdminHandler; +import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; +import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; +import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; +import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import org.alfresco.repo.index.shard.ShardState; import org.alfresco.repo.search.adaptor.lucene.QueryConstants; import org.alfresco.solr.AbstractAlfrescoSolrTests; import org.alfresco.solr.AlfrescoCoreAdminHandler; @@ -30,7 +46,6 @@ import org.alfresco.solr.client.NodeMetaData; import org.alfresco.solr.client.SOLRAPIQueueClient; import org.alfresco.solr.client.Transaction; import org.alfresco.solr.dataload.TestDataProvider; -import org.apache.lucene.document.LongPoint; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; @@ -44,18 +59,7 @@ import org.junit.Test; import java.util.List; import java.util.Map; - -import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; -import static java.util.Optional.of; -import static org.alfresco.solr.AlfrescoSolrUtils.MAX_WAIT_TIME; -import static org.alfresco.solr.AlfrescoSolrUtils.assertShardAndCoreSummaryConsistency; -import static org.alfresco.solr.AlfrescoSolrUtils.coreAdminHandler; -import static org.alfresco.solr.AlfrescoSolrUtils.getAcl; -import static org.alfresco.solr.AlfrescoSolrUtils.getAclChangeSet; -import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; -import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; -import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; +import java.util.stream.Collectors; /** * A partial state of {@link org.alfresco.solr.TrackerState} is exposed through two interfaces: AdminHandler.SUMMARY and @@ -85,7 +89,74 @@ public class AlfrescoSolrTrackerStateTest extends AbstractAlfrescoSolrTests } @Before - public void prepare() throws Exception + public void indexTestAclTransactionAndNodes() throws Exception + { + Acl acl = createAndIndexSomeAclData(); + createAndIndexTransactionWithSomeNodes(4, acl, "first"); + } + + @Test + @SuppressWarnings("deprecated") + public void shardStateMustBeConsistentWithCoreSummaryStats() throws Exception { + SolrCore core = getCore(); + + MetadataTracker tracker = + of(coreAdminHandler(core)) + .map(AlfrescoCoreAdminHandler::getTrackerRegistry) + .map(registry -> registry.getTrackerForCore(core.getName(), MetadataTracker.class)) + .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Metadata tracker on this test core.")); + + // 1. First consistency check: ShardState must have the same values of CoreAdmin.SUMMARY report + ShardState shardStateAfterFirstIndexingRound = tracker.getShardState(); + assertShardAndCoreSummaryConsistency(shardStateAfterFirstIndexingRound, core); + + // 2. Index additional ACLs + Acl acl = createAndIndexSomeAclData(); + + ShardState shardStateAfterIndexingSomeAdditionalAcl= tracker.getShardState(); + + // 3. We indexed only ACLs, so ACL data must be different while Transaction data must be the same + assertEquals(shardStateAfterFirstIndexingRound.getLastIndexedTxId(), shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedTxId()); + assertEquals(shardStateAfterFirstIndexingRound.getLastIndexedTxCommitTime(), shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedTxCommitTime()); + assertNotEquals(shardStateAfterFirstIndexingRound.getLastIndexedChangeSetId(), shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedChangeSetId()); + assertNotEquals(shardStateAfterFirstIndexingRound.getLastIndexedChangeSetCommitTime(), shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedChangeSetCommitTime()); + + // Second consistency check: ShardState must have the same values of CoreAdmin.SUMMARY report + assertShardAndCoreSummaryConsistency(shardStateAfterIndexingSomeAdditionalAcl, core); + + // 4. Index a transaction with 5 other nodes + createAndIndexTransactionWithSomeNodes(5, acl, "second"); + + ShardState shardStateAfterIndexingAnAdditionalTransaction = tracker.getShardState(); + assertNotEquals(shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedTxId(), shardStateAfterIndexingAnAdditionalTransaction.getLastIndexedTxId()); + assertNotEquals(shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedTxCommitTime(), shardStateAfterIndexingAnAdditionalTransaction.getLastIndexedTxCommitTime()); + assertEquals(shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedChangeSetId(), shardStateAfterIndexingAnAdditionalTransaction.getLastIndexedChangeSetId()); + assertEquals(shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedChangeSetCommitTime(), shardStateAfterIndexingAnAdditionalTransaction.getLastIndexedChangeSetCommitTime()); + + // 5. Third consistency check: ShardState must have the same values of CoreAdmin.SUMMARY report + assertShardAndCoreSummaryConsistency(tracker.getShardState(), core); + } + + private void makeSureTransactionHasBeenIndexed(long transactionId) throws Exception + { + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_TXID, transactionId, transactionId + 1, true, false), BooleanClause.Occur.MUST)); + BooleanQuery waitForQuery = builder.build(); + waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); + } + + private void makeSureNodesHaveBeenIndexed(int expectedCount, String searchText) throws Exception + { + waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", searchText)), expectedCount, MAX_WAIT_TIME); + + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", searchText)), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_OWNER, "mike")), BooleanClause.Occur.MUST)); + waitForDocCount(builder.build(), expectedCount, MAX_WAIT_TIME); + } + + private Acl createAndIndexSomeAclData() throws Exception { AclChangeSet aclChangeSet = getAclChangeSet(1); @@ -103,50 +174,24 @@ public class AlfrescoSolrTrackerStateTest extends AbstractAlfrescoSolrTests BooleanQuery waitForQuery = builder.build(); waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); - int howManyTestNodes = 4; + return acl; + } + /** + * Creates and indexes a transaction with a certain number of nodes. + * + * @param howManyTestNodes how many nodes we want to index. + * @param acl the related ACL. + * @param sampleTextContent a sample text content that will be used to assert nodes have been actually indexed. + */ + private void createAndIndexTransactionWithSomeNodes(int howManyTestNodes, Acl acl, String sampleTextContent) throws Exception + { Transaction txn = getTransaction(0, howManyTestNodes); Map.Entry, List> data = TestDataProvider.nSampleNodesWithSampleContent(acl, txn, howManyTestNodes); - indexTransaction(txn, data.getKey(), data.getValue()); + indexTransaction(txn, data.getKey(), data.getValue(), range(0, howManyTestNodes).mapToObj(index -> sampleTextContent).collect(Collectors.toList())); makeSureTransactionHasBeenIndexed(txn.getId()); - makeSureNodesHaveBeenIndexed(data.getKey().size()); - } - - @Test - @SuppressWarnings("deprecated") - public void shardStateMustBeConsistentWithCoreSummaryStats() - { - SolrCore core = getCore(); - - MetadataTracker tracker = - of(coreAdminHandler(core)) - .map(AlfrescoCoreAdminHandler::getTrackerRegistry) - .map(registry -> registry.getTrackerForCore(core.getName(), MetadataTracker.class)) - .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Metadata tracker on this test core.")); - - - assertShardAndCoreSummaryConsistency(tracker.getShardState(), core); - } - - private void makeSureTransactionHasBeenIndexed(long transactionId) throws Exception - { - BooleanQuery.Builder builder = new BooleanQuery.Builder(); - builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); - builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_TXID, transactionId, transactionId + 1, true, false), BooleanClause.Occur.MUST)); - BooleanQuery waitForQuery = builder.build(); - waitForDocCount(waitForQuery, 1, MAX_WAIT_TIME); - } - - private void makeSureNodesHaveBeenIndexed(int expectedCount) throws Exception - { - waitForDocCount(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); - waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), expectedCount, MAX_WAIT_TIME); - - BooleanQuery.Builder builder = new BooleanQuery.Builder(); - builder.add(new BooleanClause(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), BooleanClause.Occur.MUST)); - builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_OWNER, "mike")), BooleanClause.Occur.MUST)); - waitForDocCount(builder.build(), expectedCount, MAX_WAIT_TIME); + makeSureNodesHaveBeenIndexed(data.getKey().size(), sampleTextContent); } } \ No newline at end of file diff --git a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java index 5d61bdec3..58e697c9d 100644 --- a/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java +++ b/search-services/alfresco-search/src/test/java/org/alfresco/solr/tracker/DistributedAlfrescoSolrTrackerStateTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2014 Alfresco Software Limited. + * Copyright (C) 2005-2019 Alfresco Software Limited. * * This file is part of Alfresco * @@ -21,6 +21,7 @@ package org.alfresco.solr.tracker; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static java.util.Optional.of; +import static java.util.stream.IntStream.range; import static org.alfresco.solr.AlfrescoSolrUtils.MAX_WAIT_TIME; import static org.alfresco.solr.AlfrescoSolrUtils.assertShardAndCoreSummaryConsistency; import static org.alfresco.solr.AlfrescoSolrUtils.coreAdminHandler; @@ -30,6 +31,7 @@ import static org.alfresco.solr.AlfrescoSolrUtils.getAclReaders; import static org.alfresco.solr.AlfrescoSolrUtils.getTransaction; import static org.alfresco.solr.AlfrescoSolrUtils.indexAclChangeSet; +import org.alfresco.repo.index.shard.ShardState; import org.alfresco.repo.search.adaptor.lucene.QueryConstants; import org.alfresco.solr.AbstractAlfrescoDistributedTest; import org.alfresco.solr.AlfrescoCoreAdminHandler; @@ -53,6 +55,7 @@ import org.junit.Test; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * A partial state of {@link org.alfresco.solr.TrackerState} is exposed through two interfaces: AdminHandler.SUMMARY and @@ -70,39 +73,10 @@ public class DistributedAlfrescoSolrTrackerStateTest extends AbstractAlfrescoDis @BeforeClass private static void initData() throws Throwable { - int howManyShards = 5; - int howManyNodes = 15; + initSolrServers(5, getClassName(),null); - initSolrServers(howManyShards, getClassName(),null); - - AclChangeSet aclChangeSet = getAclChangeSet(1); - - Acl acl = getAcl(aclChangeSet); - Acl acl2 = getAcl(aclChangeSet); - - AclReaders aclReaders = getAclReaders(aclChangeSet, acl, singletonList("joel"), singletonList("phil"), null); - AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, singletonList("jim"), singletonList("phil"), null); - - indexAclChangeSet(aclChangeSet, asList(acl, acl2), asList(aclReaders, aclReaders2)); - - BooleanQuery.Builder builder = new BooleanQuery.Builder(); - builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!ACLTX")), BooleanClause.Occur.MUST)); - builder.add(new BooleanClause(LongPoint.newExactQuery(QueryConstants.FIELD_S_ACLTXID, aclChangeSet.getId()), BooleanClause.Occur.MUST)); - BooleanQuery waitForQuery = builder.build(); - waitForDocCountAllCores(waitForQuery, 1, MAX_WAIT_TIME); - - Transaction txn = getTransaction(0, howManyNodes); - Map.Entry, List> data = TestDataProvider.nSampleNodesWithSampleContent(acl, txn, howManyNodes); - - indexTransaction(txn, data.getKey(), data.getValue()); - builder = new BooleanQuery.Builder(); - builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); - builder.add(new BooleanClause(LongPoint.newExactQuery(QueryConstants.FIELD_S_TXID, txn.getId()), BooleanClause.Occur.MUST)); - waitForQuery = builder.build(); - - waitForDocCountAllCores(waitForQuery, 1, MAX_WAIT_TIME); - waitForDocCountAllCores(new TermQuery(new Term(QueryConstants.FIELD_READER, "jim")), 1, MAX_WAIT_TIME); - waitForDocCount(new TermQuery(new Term("content@s___t@{http://www.alfresco.org/model/content/1.0}content", "world")), howManyNodes, MAX_WAIT_TIME); + Acl acl = createAndIndexSomeAclData(); + createAndIndexTransactionWithSomeNodes(5, acl, "first"); } @AfterClass @@ -123,7 +97,92 @@ public class DistributedAlfrescoSolrTrackerStateTest extends AbstractAlfrescoDis .map(registry -> registry.getTrackerForCore(core.getName(), MetadataTracker.class)) .orElseThrow(() -> new IllegalStateException("Cannot retrieve the Metadata tracker on this test core.")); + // 1. First consistency check: ShardState must have the same values of CoreAdmin.SUMMARY report + ShardState shardStateAfterFirstIndexingRound = tracker.getShardState(); + assertShardAndCoreSummaryConsistency(shardStateAfterFirstIndexingRound, core); + + // 2. Index additional ACLs + Acl acl = createAndIndexSomeAclData(); + + ShardState shardStateAfterIndexingSomeAdditionalAcl= tracker.getShardState(); + + // 3. We indexed only ACLs, so ACL data must be different while Transaction data must be the same + assertEquals(shardStateAfterFirstIndexingRound.getLastIndexedTxId(), shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedTxId()); + assertEquals(shardStateAfterFirstIndexingRound.getLastIndexedTxCommitTime(), shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedTxCommitTime()); + assertNotEquals(shardStateAfterFirstIndexingRound.getLastIndexedChangeSetId(), shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedChangeSetId()); + assertNotEquals(shardStateAfterFirstIndexingRound.getLastIndexedChangeSetCommitTime(), shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedChangeSetCommitTime()); + + // Second consistency check: ShardState must have the same values of CoreAdmin.SUMMARY report + assertShardAndCoreSummaryConsistency(shardStateAfterIndexingSomeAdditionalAcl, core); + + // 4. Index a transaction with 10 other nodes + createAndIndexTransactionWithSomeNodes(10, acl, "second"); + + ShardState shardStateAfterIndexingAnAdditionalTransaction = tracker.getShardState(); + assertNotEquals(shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedTxId(), shardStateAfterIndexingAnAdditionalTransaction.getLastIndexedTxId()); + assertNotEquals(shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedTxCommitTime(), shardStateAfterIndexingAnAdditionalTransaction.getLastIndexedTxCommitTime()); + assertEquals(shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedChangeSetId(), shardStateAfterIndexingAnAdditionalTransaction.getLastIndexedChangeSetId()); + assertEquals(shardStateAfterIndexingSomeAdditionalAcl.getLastIndexedChangeSetCommitTime(), shardStateAfterIndexingAnAdditionalTransaction.getLastIndexedChangeSetCommitTime()); + + // 5. Third consistency check: ShardState must have the same values of CoreAdmin.SUMMARY report assertShardAndCoreSummaryConsistency(tracker.getShardState(), core); }); } + + private static Acl createAndIndexSomeAclData() + { + try { + + AclChangeSet aclChangeSet = getAclChangeSet(1); + + Acl acl = getAcl(aclChangeSet); + Acl acl2 = getAcl(aclChangeSet); + + AclReaders aclReaders = getAclReaders(aclChangeSet, acl, singletonList("joel"), singletonList("phil"), null); + AclReaders aclReaders2 = getAclReaders(aclChangeSet, acl2, singletonList("jim"), singletonList("phil"), null); + + indexAclChangeSet(aclChangeSet, asList(acl, acl2), asList(aclReaders, aclReaders2)); + + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!ACLTX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LegacyNumericRangeQuery.newLongRange(QueryConstants.FIELD_S_ACLTXID, aclChangeSet.getId(), aclChangeSet.getId() + 1, true, false), BooleanClause.Occur.MUST)); + BooleanQuery waitForQuery = builder.build(); + waitForDocCountAllCores(waitForQuery, 1, MAX_WAIT_TIME); + + return acl; + } + catch (Exception exception) + { + throw new RuntimeException(exception); + } + } + + /** + * Creates and indexes a transaction with a certain number of nodes. + * + * @param howManyTestNodes how many nodes we want to index. + * @param acl the related ACL. + * @param sampleTextContent a sample text content that will be used to assert nodes have been actually indexed. + */ + private static void createAndIndexTransactionWithSomeNodes(int howManyTestNodes, Acl acl, String sampleTextContent) + { + try + { + Transaction txn = getTransaction(0, howManyTestNodes); + Map.Entry, List> data = TestDataProvider.nSampleNodesWithSampleContent(acl, txn, howManyTestNodes); + + indexTransaction(txn, data.getKey(), data.getValue(), range(0, howManyTestNodes).mapToObj(index -> sampleTextContent).collect(Collectors.toList())); + + BooleanQuery.Builder builder = new BooleanQuery.Builder(); + builder.add(new BooleanClause(new TermQuery(new Term(QueryConstants.FIELD_SOLR4_ID, "TRACKER!STATE!TX")), BooleanClause.Occur.MUST)); + builder.add(new BooleanClause(LongPoint.newExactQuery(QueryConstants.FIELD_S_TXID, txn.getId()), BooleanClause.Occur.MUST)); + BooleanQuery waitForQuery = builder.build(); + + waitForDocCountAllCores(waitForQuery, 1, MAX_WAIT_TIME); + } + catch (Exception exception) + { + throw new RuntimeException(exception); + } + } } \ No newline at end of file