This is an automated email from the ASF dual-hosted git repository.

ngupta pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new e904e45942 OAK-10503 | Handle Exception in case of diff failures while 
building incremental FFS and handling Add operations during merging of 
incremental FFS. (#1172)
e904e45942 is described below

commit e904e4594274f28fd7499ec1620648893b43d6b0
Author: nit0906 <[email protected]>
AuthorDate: Fri Oct 20 10:38:36 2023 +0530

    OAK-10503 | Handle Exception in case of diff failures while building 
incremental FFS and handling Add operations during merging of incremental FFS. 
(#1172)
    
    * Don't throw exception in case of Modified operation instead of Add
    
    * Throw exception in case of diff failure while building incremental ffs
    
    ---------
    
    Co-authored-by: Nitin Gupta <[email protected]>
---
 .../document/incrementalstore/IncrementalFlatFileStoreStrategy.java | 6 +++++-
 .../document/incrementalstore/MergeIncrementalFlatFileStore.java    | 5 ++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git 
a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/incrementalstore/IncrementalFlatFileStoreStrategy.java
 
b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/incrementalstore/IncrementalFlatFileStoreStrategy.java
index fc776d93fa..1718e71f86 100644
--- 
a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/incrementalstore/IncrementalFlatFileStoreStrategy.java
+++ 
b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/incrementalstore/IncrementalFlatFileStoreStrategy.java
@@ -85,7 +85,11 @@ public class IncrementalFlatFileStoreStrategy implements 
IncrementalIndexStoreSo
         try (BufferedWriter w = FlatFileStoreUtils.createWriter(file, 
algorithm)) {
             NodeState before = 
Objects.requireNonNull(nodeStore.retrieve(beforeCheckpoint));
             NodeState after = 
Objects.requireNonNull(nodeStore.retrieve(afterCheckpoint));
-            EditorDiff.process(VisibleEditor.wrap(new 
IncrementalFlatFileStoreEditor(w, entryWriter, pathPredicate, this)), before, 
after);
+            Exception e = EditorDiff.process(VisibleEditor.wrap(new 
IncrementalFlatFileStoreEditor(w, entryWriter, pathPredicate, this)), before, 
after);
+            if (e != null) {
+                log.error("Exception while building incremental store for 
checkpoint before {}, after {}", beforeCheckpoint, afterCheckpoint, e);
+                throw new RuntimeException(e);
+            }
         }
         String sizeStr = algorithm.equals(Compression.NONE) ? "" : 
String.format("compressed/%s actual size", humanReadableByteCount(textSize));
         log.info("Dumped {} nodestates in json format in {} ({} {})", 
entryCount, sw, humanReadableByteCount(file.length()), sizeStr);
diff --git 
a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/incrementalstore/MergeIncrementalFlatFileStore.java
 
b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/incrementalstore/MergeIncrementalFlatFileStore.java
index 6fde796030..b6cc8ecc6b 100644
--- 
a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/incrementalstore/MergeIncrementalFlatFileStore.java
+++ 
b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/incrementalstore/MergeIncrementalFlatFileStore.java
@@ -115,7 +115,10 @@ public class MergeIncrementalFlatFileStore implements 
MergeIncrementalStore {
                         baseFFSLine = writeAndAdvance(writer, 
baseFFSBufferedReader, baseFFSLine);
                     } else if (compared > 0) { // write incrementalFFSline and 
advance line in incrementalFFS
                         String[] incrementalFFSParts = 
IncrementalFlatFileStoreNodeStateEntryWriter.getParts(incrementalFFSLine);
-                        
checkState(IncrementalStoreOperand.ADD.toString().equals(getOperand(incrementalFFSParts)));
+                        if 
(!IncrementalStoreOperand.ADD.toString().equals(getOperand(incrementalFFSParts)))
 {
+                            log.warn("Expected operand {} but got {} for 
incremental line {}. Merging will proceed as usual, but this needs to be looked 
into.",
+                                    IncrementalStoreOperand.ADD, 
getOperand(incrementalFFSParts), incrementalFFSLine);
+                        }
                         incrementalFFSLine = writeAndAdvance(writer, 
incrementalFFSBufferedReader,
                                 
getFFSLineFromIncrementalFFSParts(incrementalFFSParts));
                     } else {

Reply via email to