You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by br...@apache.org on 2023/02/23 15:20:41 UTC

[solr] branch branch_9x updated: SOLR-16255: Introduce DirectUpdateHandler2#shouldCommit.

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

broustant pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new a8e72f71650 SOLR-16255: Introduce DirectUpdateHandler2#shouldCommit.
a8e72f71650 is described below

commit a8e72f71650e867463ff249f7ea13145a6723136
Author: Bruno Roustant <33...@users.noreply.github.com>
AuthorDate: Wed Jul 13 16:26:07 2022 +0200

    SOLR-16255: Introduce DirectUpdateHandler2#shouldCommit.
---
 .../src/java/org/apache/solr/update/CommitUpdateCommand.java  |  6 +++++-
 .../src/java/org/apache/solr/update/DirectUpdateHandler2.java | 11 ++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/update/CommitUpdateCommand.java b/solr/core/src/java/org/apache/solr/update/CommitUpdateCommand.java
index 8dcb5ff6cb6..0d47cbc6392 100644
--- a/solr/core/src/java/org/apache/solr/update/CommitUpdateCommand.java
+++ b/solr/core/src/java/org/apache/solr/update/CommitUpdateCommand.java
@@ -27,7 +27,11 @@ public class CommitUpdateCommand extends UpdateCommand {
   public boolean expungeDeletes = false;
   public boolean softCommit = false;
   public boolean prepareCommit = false;
-  /** User provided commit data. Can be let to null if there is none. */
+  /**
+   * User provided commit data. Can be let to null if there is none. It is possible to commit this
+   * user data, even if there is no uncommitted change in the index writer, provided this user data
+   * is not empty.
+   */
   public Map<String, String> commitData;
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
index bc94e1227bf..1d5339f26d7 100644
--- a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
+++ b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
@@ -737,7 +737,7 @@ public class DirectUpdateHandler2 extends UpdateHandler
 
           // SolrCore.verbose("writer.commit() start writer=",writer);
 
-          if (writer.hasUncommittedChanges()) {
+          if (shouldCommit(cmd, writer)) {
             SolrIndexWriter.setCommitData(writer, cmd.getVersion(), cmd.commitData);
             writer.commit();
           } else {
@@ -817,6 +817,15 @@ public class DirectUpdateHandler2 extends UpdateHandler
     }
   }
 
+  /**
+   * Determines whether the commit command should effectively trigger a commit on the index writer.
+   * This method is called with the commit lock and is the last step before effectively calling
+   * {@link IndexWriter#commit()}.
+   */
+  protected boolean shouldCommit(CommitUpdateCommand cmd, IndexWriter writer) throws IOException {
+    return writer.hasUncommittedChanges() || (cmd.commitData != null && !cmd.commitData.isEmpty());
+  }
+
   @Override
   public void newIndexWriter(boolean rollback) throws IOException {
     solrCoreState.newIndexWriter(core, rollback);