You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ds...@apache.org on 2026/09/27 02:45:29 UTC

(solr) 01/05: SOLR-18135: Preserve merge exception; stop merge timer only once (#4939)

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

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

commit e7ab25535ff3321ca32a4f42871bf7e7f153f9bf
Author: Nick <ni...@gmail.com>
AuthorDate: Thu Sep 24 09:24:23 2026 -0400

    SOLR-18135: Preserve merge exception; stop merge timer only once (#4939)
    
    (cherry picked from commit 8e02c856a1bb0ce84999cbeb6fc0ccc19095b4a3)
---
 changelog/unreleased/SOLR-18135.yml                            | 7 +++++++
 solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java | 5 +----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/changelog/unreleased/SOLR-18135.yml b/changelog/unreleased/SOLR-18135.yml
new file mode 100644
index 00000000000..d83db110aaf
--- /dev/null
+++ b/changelog/unreleased/SOLR-18135.yml
@@ -0,0 +1,7 @@
+title: Fix double-stop of the merge timer when segment merging fails with assertions enabled.
+type: fixed
+authors:
+  - name: Nick Shanin
+links:
+  - name: SOLR-18135
+    url: https://issues.apache.org/jira/browse/SOLR-18135
diff --git a/solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java b/solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java
index 200c85728c0..a1d6ba72891 100644
--- a/solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrIndexWriter.java
@@ -229,16 +229,13 @@ public class SolrIndexWriter extends IndexWriter {
         updateMergeMetrics(totalNumDocs, deletedDocs, segmentsCount, false, false, null);
     try {
       super.merge(merge);
-      updateMergeMetrics(totalNumDocs, deletedDocs, segmentsCount, true, false, timer);
     } catch (Throwable t) {
-      if (timer != null) {
-        timer.stop();
-      }
       updateMergeMetrics(totalNumDocs, deletedDocs, segmentsCount, true, true, timer);
       throw t;
     } finally {
       runningMerges.remove(segString);
     }
+    updateMergeMetrics(totalNumDocs, deletedDocs, segmentsCount, true, false, timer);
   }
 
   public Map<String, Object> getRunningMerges() {