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

joerghoh pushed a commit to branch SLING-12264
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-repoinit.git

commit abdbe8b67ffd360c6abdcc2fbfea61af1e11a835
Author: Joerg Hoh <[email protected]>
AuthorDate: Sat Mar 9 18:02:52 2024 +0100

    SLING-12264 only call save() if there's something to save
---
 src/main/java/org/apache/sling/jcr/repoinit/impl/NodeVisitor.java     | 4 +++-
 .../org/apache/sling/jcr/repoinit/impl/RepositoryInitializer.java     | 4 +++-
 .../apache/sling/jcr/repoinit/impl/RepositoryInitializerFactory.java  | 4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/sling/jcr/repoinit/impl/NodeVisitor.java 
b/src/main/java/org/apache/sling/jcr/repoinit/impl/NodeVisitor.java
index 8843f02..33c98a9 100644
--- a/src/main/java/org/apache/sling/jcr/repoinit/impl/NodeVisitor.java
+++ b/src/main/java/org/apache/sling/jcr/repoinit/impl/NodeVisitor.java
@@ -118,7 +118,9 @@ public class NodeVisitor extends DoNothingVisitor {
             npv.visitSetProperties(sp);
         }
         try {
-            session.save();
+            if (session.hasPendingChanges()) {
+                session.save();
+            }
         } catch (Exception e) {
             report(e, "Session.save failed: " + e);
         }
diff --git 
a/src/main/java/org/apache/sling/jcr/repoinit/impl/RepositoryInitializer.java 
b/src/main/java/org/apache/sling/jcr/repoinit/impl/RepositoryInitializer.java
index d20c6e3..8d822ba 100644
--- 
a/src/main/java/org/apache/sling/jcr/repoinit/impl/RepositoryInitializer.java
+++ 
b/src/main/java/org/apache/sling/jcr/repoinit/impl/RepositoryInitializer.java
@@ -105,7 +105,9 @@ public class RepositoryInitializer implements 
SlingRepositoryInitializer {
                         }
                         log.info("Executing {} repoinit operations from {}", 
ops.size(), reference);
                         processor.apply(s, ops);
-                        s.save();
+                        if (s.hasPendingChanges()) {
+                            s.save();
+                        }
                     } catch 
(IOException|RuntimeException|RepositoryException|RepoInitParsingException e) {
                         throw new RepoInitException("Error executing repoinit 
from " + reference, e);
                     }
diff --git 
a/src/main/java/org/apache/sling/jcr/repoinit/impl/RepositoryInitializerFactory.java
 
b/src/main/java/org/apache/sling/jcr/repoinit/impl/RepositoryInitializerFactory.java
index f076dc9..f1d4f1f 100644
--- 
a/src/main/java/org/apache/sling/jcr/repoinit/impl/RepositoryInitializerFactory.java
+++ 
b/src/main/java/org/apache/sling/jcr/repoinit/impl/RepositoryInitializerFactory.java
@@ -185,7 +185,9 @@ public class RepositoryInitializerFactory implements 
SlingRepositoryInitializer
         return retry.apply(() -> {
             try {
                 processor.apply(session, ops);
-                session.save();
+                if (session.hasPendingChanges()) {
+                    session.save();
+                }
                 return new 
RetryableOperation.RetryableOperationResult(true,false,reference,null);
             } catch (InvalidItemStateException|RepoInitException ex) {
                 // a retry makes sense, because this exception might be caused 
by an concurrent operation

Reply via email to