From f5047a2fd733a0bd8b7d8f7eacd627aca4c15a84 Mon Sep 17 00:00:00 2001 From: Eva Vasques Date: Thu, 17 Feb 2022 10:30:55 +0000 Subject: [PATCH] Only add the latest transaction if not indexed when shard out of range (cherry picked from commit 7b6ba5817f8b5744e4a672895d2327fe2ff0a411) --- .../alfresco/solr/tracker/MetadataTracker.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 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 e65eb7f41..8e9d002ca 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 @@ -808,7 +808,7 @@ public class MetadataTracker extends ActivatableTracker { LOGGER.debug( "{}-[CORE {}] [DB_ID_RANGE] Last commit time is greater that max commit time in in range [{}-{}]. " - + "Indexing only latest transaction.", + + "Indexing only latest transaction if necessary.", Thread.currentThread().getId(), coreName, dbIdRangeRouter.getStartRange(), dbIdRangeRouter.getEndRange()); shardOutOfRange = true; @@ -832,10 +832,19 @@ public class MetadataTracker extends ActivatableTracker Transaction latestTransaction = new Transaction(); latestTransaction.setCommitTimeMs(transactions.getMaxTxnCommitTime()); latestTransaction.setId(transactions.getMaxTxnId()); - transactions = new Transactions( - Collections.singletonList(latestTransaction), - transactions.getMaxTxnCommitTime(), + + if (!isTransactionIndexed(latestTransaction)) + { + transactions = new Transactions(Collections.singletonList(latestTransaction), transactions.getMaxTxnCommitTime(), transactions.getMaxTxnId()); + LOGGER.debug("{}:{}-[CORE {}] [DB_ID_RANGE] Latest transaction to be indexed {}", + Thread.currentThread().getId(), coreName, latestTransaction); + } + else + { + // All up do date, don't return transactions + return new Transactions(Collections.emptyList(), 0L, 0L); + } } return transactions;