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 nf...@apache.org on 2025/01/15 14:38:03 UTC

(jackrabbit-oak) branch trunk updated: OAK-11394 - Avoid creation of iterator when creating a CompositeEditor. (#1987)

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

nfsantos 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 80171773f4 OAK-11394 - Avoid creation of iterator when creating a CompositeEditor. (#1987)
80171773f4 is described below

commit 80171773f4ae02b9245ffb3cbf8b80c91be3e205
Author: Nuno Santos <ns...@adobe.com>
AuthorDate: Wed Jan 15 15:37:58 2025 +0100

    OAK-11394 - Avoid creation of iterator when creating a CompositeEditor. (#1987)
---
 .../jackrabbit/oak/plugins/index/IndexUpdate.java  | 20 ++++++++--------
 .../jackrabbit/oak/spi/commit/CompositeEditor.java | 27 +++++++++++-----------
 2 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
index d42200570e..0fbbe57c84 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdate.java
@@ -31,9 +31,6 @@ import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_DISABL
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexUtils.getAsyncLaneName;
 import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.MISSING_NODE;
-import static org.apache.jackrabbit.oak.spi.commit.CompositeEditor.compose;
-import static org.apache.jackrabbit.oak.spi.commit.EditorDiff.process;
-import static org.apache.jackrabbit.oak.spi.commit.VisibleEditor.wrap;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -57,7 +54,10 @@ import org.apache.jackrabbit.oak.plugins.index.progress.NodeCountEstimator;
 import org.apache.jackrabbit.oak.plugins.index.progress.TraversalRateEstimator;
 import org.apache.jackrabbit.oak.plugins.index.upgrade.IndexDisabler;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+import org.apache.jackrabbit.oak.spi.commit.CompositeEditor;
 import org.apache.jackrabbit.oak.spi.commit.Editor;
+import org.apache.jackrabbit.oak.spi.commit.EditorDiff;
+import org.apache.jackrabbit.oak.spi.commit.VisibleEditor;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
@@ -134,7 +134,7 @@ public class IndexUpdate implements Editor, PathSource {
     /**
      * Editors for indexes that need to be re-indexed.
      */
-    private final Map<String, Editor> reindex = new HashMap<String, Editor>();
+    private final Map<String, Editor> reindex = new HashMap<>();
 
     public IndexUpdate(
             IndexEditorProvider provider, String async,
@@ -182,8 +182,10 @@ public class IndexUpdate implements Editor, PathSource {
         }
 
         // no-op when reindex is empty
-        CommitFailedException exception = process(
-                wrap(wrapProgress(compose(reindex.values()))), MISSING_NODE, after);
+        CommitFailedException exception = EditorDiff.process(
+                VisibleEditor.wrap(wrapProgress(CompositeEditor.compose(reindex.values()))),
+                MISSING_NODE,
+                after);
         rootState.progressReporter.reindexingTraversalEnd();
         if (exception != null) {
             throw exception;
@@ -503,7 +505,7 @@ public class IndexUpdate implements Editor, PathSource {
                 children.add(child);
             }
         }
-        return compose(children);
+        return CompositeEditor.compose(children);
     }
 
     @Override @NotNull
@@ -518,7 +520,7 @@ public class IndexUpdate implements Editor, PathSource {
                 children.add(child);
             }
         }
-        return compose(children);
+        return CompositeEditor.compose(children);
     }
 
     @Override @Nullable
@@ -531,7 +533,7 @@ public class IndexUpdate implements Editor, PathSource {
                 children.add(child);
             }
         }
-        return compose(children);
+        return CompositeEditor.compose(children);
     }
 
     public void commitProgress(IndexProgress indexProgress) {
diff --git a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeEditor.java b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeEditor.java
index d351fe63df..b4b5264584 100644
--- a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeEditor.java
+++ b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeEditor.java
@@ -16,7 +16,6 @@
  */
 package org.apache.jackrabbit.oak.spi.commit;
 
-import static java.util.Arrays.asList;
 import static java.util.Objects.requireNonNull;
 
 import org.apache.jackrabbit.oak.api.CommitFailedException;
@@ -34,27 +33,31 @@ import java.util.List;
  */
 public class CompositeEditor implements Editor {
 
-    @Nullable
     public static Editor compose(@NotNull Collection<? extends Editor> editors) {
+        return compose(new ArrayList<>(editors));
+    }
+
+    @Nullable
+    public static Editor compose(@NotNull List<? extends Editor> editors) {
         requireNonNull(editors);
         switch (editors.size()) {
-        case 0:
-            return null;
-        case 1:
-            return editors.iterator().next();
-        default:
-            return new CompositeEditor(editors);
+            case 0:
+                return null;
+            case 1:
+                return editors.get(0);
+            default:
+                return new CompositeEditor(editors);
         }
     }
 
-    private final Collection<? extends Editor> editors;
+    private final List<? extends Editor> editors;
 
-    public CompositeEditor(Collection<? extends Editor> editors) {
+    public CompositeEditor(List<? extends Editor> editors) {
         this.editors = editors;
     }
 
     public CompositeEditor(Editor... editors) {
-        this(asList(editors));
+        this(List.of(editors));
     }
 
     @Override
@@ -73,7 +76,6 @@ public class CompositeEditor implements Editor {
         }
     }
 
-
     @Override
     public void propertyAdded(PropertyState after)
             throws CommitFailedException {
@@ -137,5 +139,4 @@ public class CompositeEditor implements Editor {
         }
         return compose(list);
     }
-
 }