You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by md...@apache.org on 2020/09/08 15:13:34 UTC

[lucene-solr] branch master updated: LUCENE-9504 Remove extra lock in DocumentsWriterDeleteQueue (#1826)

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

mdrob pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/master by this push:
     new 4c5c8c4  LUCENE-9504 Remove extra lock in DocumentsWriterDeleteQueue (#1826)
4c5c8c4 is described below

commit 4c5c8c4ead74c92b6ab0ec55bca709d36ad152d9
Author: Mike Drob <md...@apache.org>
AuthorDate: Tue Sep 8 10:13:18 2020 -0500

    LUCENE-9504 Remove extra lock in DocumentsWriterDeleteQueue (#1826)
---
 .../lucene/index/DocumentsWriterDeleteQueue.java      | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterDeleteQueue.java b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterDeleteQueue.java
index cb3db7a..ab5d657 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterDeleteQueue.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterDeleteQueue.java
@@ -509,27 +509,18 @@ final class DocumentsWriterDeleteQueue implements Accountable, Closeable {
     }
   }
   
-  private boolean forceApplyGlobalSlice() {
-    globalBufferLock.lock();
-    final Node<?> currentTail = tail;
+  public int getBufferedUpdatesTermsSize() {
+    final ReentrantLock lock = globalBufferLock; // Trusted final
+    lock.lock();
     try {
+      final Node<?> currentTail = tail;
       if (globalSlice.sliceTail != currentTail) {
         globalSlice.sliceTail = currentTail;
         globalSlice.apply(globalBufferedUpdates, BufferedUpdates.MAX_INT);
       }
-      return globalBufferedUpdates.any();
-    } finally {
-      globalBufferLock.unlock();
-    }
-  }
-
-  public int getBufferedUpdatesTermsSize() {
-    globalBufferLock.lock();
-    try {
-      forceApplyGlobalSlice();
       return globalBufferedUpdates.deleteTerms.size();
     } finally {
-      globalBufferLock.unlock();
+      lock.unlock();
     }
   }