You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by gu...@apache.org on 2023/10/10 05:42:25 UTC

[lucene] branch main updated: DeletedTerms#clear should reset ByteBlockPool (#12630)

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

guofeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/main by this push:
     new e20e245f476 DeletedTerms#clear should reset ByteBlockPool (#12630)
e20e245f476 is described below

commit e20e245f4763e5aa53b34caa23cf515d516ba5b7
Author: gf2121 <52...@users.noreply.github.com>
AuthorDate: Tue Oct 10 00:42:17 2023 -0500

    DeletedTerms#clear should reset ByteBlockPool (#12630)
---
 .../src/java/org/apache/lucene/index/BufferedUpdates.java  | 14 ++++++++++++++
 .../test/org/apache/lucene/index/TestBufferedUpdates.java  |  7 ++++++-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/lucene/core/src/java/org/apache/lucene/index/BufferedUpdates.java b/lucene/core/src/java/org/apache/lucene/index/BufferedUpdates.java
index f6a30e3e733..3dfe00b5e37 100644
--- a/lucene/core/src/java/org/apache/lucene/index/BufferedUpdates.java
+++ b/lucene/core/src/java/org/apache/lucene/index/BufferedUpdates.java
@@ -230,6 +230,7 @@ class BufferedUpdates implements Accountable {
     }
 
     void clear() {
+      pool.reset(false, false);
       bytesUsed.addAndGet(-bytesUsed.get());
       deleteTerms.clear();
       termsSize = 0;
@@ -280,10 +281,23 @@ class BufferedUpdates implements Accountable {
       }
     }
 
+    /** Visible for testing. */
+    ByteBlockPool getPool() {
+      return pool;
+    }
+
     @Override
     public long ramBytesUsed() {
       return bytesUsed.get();
     }
+
+    /** Used for {@link BufferedUpdates#VERBOSE_DELETES}. */
+    @Override
+    public String toString() {
+      return keySet().stream()
+          .map(t -> t + "=" + get(t))
+          .collect(Collectors.joining(", ", "{", "}"));
+    }
   }
 
   private static class BytesRefIntMap {
diff --git a/lucene/core/src/test/org/apache/lucene/index/TestBufferedUpdates.java b/lucene/core/src/test/org/apache/lucene/index/TestBufferedUpdates.java
index af24088e4aa..6196dcd5e5b 100644
--- a/lucene/core/src/test/org/apache/lucene/index/TestBufferedUpdates.java
+++ b/lucene/core/src/test/org/apache/lucene/index/TestBufferedUpdates.java
@@ -61,10 +61,10 @@ public class TestBufferedUpdates extends LuceneTestCase {
   public void testDeletedTerms() {
     int iters = atLeast(10);
     String[] fields = new String[] {"a", "b", "c"};
+    BufferedUpdates.DeletedTerms actual = new BufferedUpdates.DeletedTerms();
     for (int iter = 0; iter < iters; iter++) {
 
       Map<Term, Integer> expected = new HashMap<>();
-      BufferedUpdates.DeletedTerms actual = new BufferedUpdates.DeletedTerms();
       assertTrue(actual.isEmpty());
 
       int termCount = atLeast(5000);
@@ -95,6 +95,11 @@ public class TestBufferedUpdates extends LuceneTestCase {
           }));
 
       assertEquals(expectedSorted, actualSorted);
+
+      actual.clear();
+      assertEquals(0, actual.size());
+      assertEquals(0, actual.ramBytesUsed());
+      assertNull(actual.getPool().buffer);
     }
   }
 }