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

Jackie-Jiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new da2e20cb9df Move caching Null Bitmap to NullValueVectorReaderImpl's 
contructor (#18399)
da2e20cb9df is described below

commit da2e20cb9dfb99eb5439c3f70da1ada12a0c1161
Author: Songqiao Su <[email protected]>
AuthorDate: Mon May 4 14:14:01 2026 -0700

    Move caching Null Bitmap to NullValueVectorReaderImpl's contructor (#18399)
---
 .../segment/index/readers/NullValueVectorReaderImpl.java    | 13 +++----------
 .../index/readers/NullValueVectorReaderImplTest.java        | 13 -------------
 2 files changed, 3 insertions(+), 23 deletions(-)

diff --git 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/NullValueVectorReaderImpl.java
 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/NullValueVectorReaderImpl.java
index 61d74816f60..d3dfa0652ff 100644
--- 
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/NullValueVectorReaderImpl.java
+++ 
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/NullValueVectorReaderImpl.java
@@ -25,13 +25,11 @@ import org.roaringbitmap.buffer.ImmutableRoaringBitmap;
 
 public class NullValueVectorReaderImpl implements NullValueVectorReader {
 
-  private final PinotDataBuffer _dataBuffer;
   // Cached bitmap to avoid re-deserializing from the underlying buffer on 
every call.
-  // ImmutableRoaringBitmap is thread-safe once constructed, so a volatile 
field is sufficient.
-  private volatile ImmutableRoaringBitmap _nullBitmap;
+  private final ImmutableRoaringBitmap _nullBitmap;
 
   public NullValueVectorReaderImpl(PinotDataBuffer dataBuffer) {
-    _dataBuffer = dataBuffer;
+    _nullBitmap = new ImmutableRoaringBitmap(dataBuffer.toDirectByteBuffer(0, 
(int) dataBuffer.size()));
   }
 
   public boolean isNull(int docId) {
@@ -40,11 +38,6 @@ public class NullValueVectorReaderImpl implements 
NullValueVectorReader {
 
   @Override
   public ImmutableRoaringBitmap getNullBitmap() {
-    ImmutableRoaringBitmap nullBitmap = _nullBitmap;
-    if (nullBitmap == null) {
-      nullBitmap = new 
ImmutableRoaringBitmap(_dataBuffer.toDirectByteBuffer(0, (int) 
_dataBuffer.size()));
-      _nullBitmap = nullBitmap;
-    }
-    return nullBitmap;
+    return _nullBitmap;
   }
 }
diff --git 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/readers/NullValueVectorReaderImplTest.java
 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/readers/NullValueVectorReaderImplTest.java
index 20797187db2..62908fba494 100644
--- 
a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/readers/NullValueVectorReaderImplTest.java
+++ 
b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/segment/index/readers/NullValueVectorReaderImplTest.java
@@ -62,19 +62,6 @@ public class NullValueVectorReaderImplTest implements 
PinotBuffersAfterMethodChe
     }
   }
 
-  @Test
-  public void testNullBitmapIsCached()
-      throws IOException {
-    File nullValueFile = new File(TEMP_DIR, TEMP_DIR.list()[0]);
-    try (PinotDataBuffer buffer = 
PinotDataBuffer.loadBigEndianFile(nullValueFile)) {
-      NullValueVectorReaderImpl reader = new NullValueVectorReaderImpl(buffer);
-      // Repeated calls to getNullBitmap() must return the same instance, not 
reconstruct it
-      org.roaringbitmap.buffer.ImmutableRoaringBitmap first = 
reader.getNullBitmap();
-      org.roaringbitmap.buffer.ImmutableRoaringBitmap second = 
reader.getNullBitmap();
-      Assert.assertSame(first, second, "getNullBitmap() should return the 
cached instance on repeated calls");
-    }
-  }
-
   @AfterClass
   public void tearDown()
       throws Exception {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to