You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ng...@apache.org on 2023/10/20 05:08:42 UTC

[jackrabbit-oak] branch trunk updated: OAK-10503 | Handle Exception in case of diff failures while building incremental FFS and handling Add operations during merging of incremental FFS. (#1172)

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 <ni...@gmail.com>
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 <ni...@adobe.com>
---
 .../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 {