From c3ab1fc817e30b94d0154e48b13bc651ee177643 Mon Sep 17 00:00:00 2001 From: Angel Borroy Date: Wed, 8 Jan 2020 14:45:49 +0100 Subject: [PATCH] Use the feature only when nextTxCommitTime Web Script is available in the repository. --- .../solr/tracker/MetadataTracker.java | 24 +++++++++++++++++-- .../alfresco/solr/client/SOLRAPIClient.java | 1 - 2 files changed, 22 insertions(+), 3 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 7c0df7841..a3a00fd2e 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 @@ -63,6 +63,16 @@ public class MetadataTracker extends CoreStatePublisher implements Tracker private ConcurrentLinkedQueue nodesToIndex = new ConcurrentLinkedQueue<>(); private ConcurrentLinkedQueue nodesToPurge = new ConcurrentLinkedQueue<>(); private ConcurrentLinkedQueue queriesToReindex = new ConcurrentLinkedQueue<>(); + + /** + * Check if nextTxCommitTimeService is available in the repository. + * This service is used to find the next available transaction commit time from a given time, + * so periods of time where no document updating is happening can be skipped while getting + * pending transactions list. + * + * {@link org.alfresco.solr.client.SOLRAPIClient#GET_NEXT_TX_COMMIT_TIME} + */ + private boolean nextTxCommitTimeServiceAvailable = false; public MetadataTracker(final boolean isMaster, Properties p, SOLRAPIClient client, String coreName, InformationServer informationServer) @@ -71,6 +81,16 @@ public class MetadataTracker extends CoreStatePublisher implements Tracker transactionDocsBatchSize = Integer.parseInt(p.getProperty("alfresco.transactionDocsBatchSize", "100")); nodeBatchSize = Integer.parseInt(p.getProperty("alfresco.nodeBatchSize", "10")); threadHandler = new ThreadHandler(p, coreName, "MetadataTracker"); + + try + { + client.getNextTxCommitTime(coreName, 0l); + nextTxCommitTimeServiceAvailable = true; + } + catch (Exception e) + { + log.warn("nextTxCommitTimeService is not available. Upgrade your ACS Repository version in order to use this feature", e); + } } MetadataTracker() @@ -548,12 +568,12 @@ public class MetadataTracker extends CoreStatePublisher implements Tracker startTime += actualTimeStep; // If no transactions are found, advance the time window to the next available transaction commit time - if (transactions.getTransactions().size() == 0) + if (nextTxCommitTimeServiceAvailable && transactions.getTransactions().size() == 0) { Long nextTxCommitTime = client.getNextTxCommitTime(coreName, startTime); if (nextTxCommitTime != -1) { - log.info("Advancing transactions from startTime = " + startTime + " to " + nextTxCommitTime); + log.info("Advancing transactions from {} to {}", startTime, nextTxCommitTime); transactions = client.getTransactions(nextTxCommitTime, null, nextTxCommitTime + actualTimeStep, null, maxResults, shardstate); } } diff --git a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/SOLRAPIClient.java b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/SOLRAPIClient.java index 2be8197e1..eb2142ff1 100644 --- a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/SOLRAPIClient.java +++ b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/SOLRAPIClient.java @@ -1239,7 +1239,6 @@ public class SOLRAPIClient * @return Time of the next transaction * @throws IOException * @throws AuthenticationException - * @throws Exception */ public Long getNextTxCommitTime(String coreName, Long fromCommitTime) throws AuthenticationException, IOException {