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 {