This is an automated email from the ASF dual-hosted git repository.
xiangfu 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 689c2f32d7a Avoid npe in the getdocIds code for Upserts (#16710)
689c2f32d7a is described below
commit 689c2f32d7adc66ad5810298295a75be221d3ac1
Author: Chaitanya Deepthi <[email protected]>
AuthorDate: Thu Aug 28 22:44:37 2025 -0700
Avoid npe in the getdocIds code for Upserts (#16710)
---
.../upsert/BasePartitionUpsertMetadataManager.java | 28 +++++++++++++++-------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/upsert/BasePartitionUpsertMetadataManager.java
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/upsert/BasePartitionUpsertMetadataManager.java
index d5be5b4b4b3..5373db37fa0 100644
---
a/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/upsert/BasePartitionUpsertMetadataManager.java
+++
b/pinot-segment-local/src/main/java/org/apache/pinot/segment/local/upsert/BasePartitionUpsertMetadataManager.java
@@ -905,18 +905,25 @@ public abstract class BasePartitionUpsertMetadataManager
implements PartitionUps
segmentsWithoutSnapshot.add(immutableSegment);
continue;
}
+ ThreadSafeMutableRoaringBitmap queryableDocIdsBitMap = null;
+ ThreadSafeMutableRoaringBitmap validDocIdsBitMap =
+ immutableSegment.getValidDocIds() == null ? new
ThreadSafeMutableRoaringBitmap()
+ : immutableSegment.getValidDocIds();
immutableSegment.persistDocIdsSnapshot(V1Constants.VALID_DOC_IDS_SNAPSHOT_FILE_NAME,
- immutableSegment.getValidDocIds());
+ validDocIdsBitMap);
if (_deleteRecordColumn != null) {
+ queryableDocIdsBitMap =
+ immutableSegment.getQueryableDocIds() == null ? new
ThreadSafeMutableRoaringBitmap()
+ : immutableSegment.getQueryableDocIds();
immutableSegment.persistDocIdsSnapshot(V1Constants.QUERYABLE_DOC_IDS_SNAPSHOT_FILE_NAME,
- immutableSegment.getQueryableDocIds());
+ queryableDocIdsBitMap);
}
_updatedSegmentsSinceLastSnapshot.remove(segment);
numImmutableSegments++;
- numPrimaryKeysInSnapshot +=
immutableSegment.getValidDocIds().getMutableRoaringBitmap().getCardinality();
+ numPrimaryKeysInSnapshot +=
validDocIdsBitMap.getMutableRoaringBitmap().getCardinality();
if (_deleteRecordColumn != null) {
numQueryableDocIdsInSnapshot +=
-
immutableSegment.getQueryableDocIds().getMutableRoaringBitmap().getCardinality();
+ queryableDocIdsBitMap.getMutableRoaringBitmap().getCardinality();
}
} catch (Exception e) {
_logger.warn("Caught exception while taking snapshot for segment: {},
skipping", segmentName, e);
@@ -940,16 +947,21 @@ public abstract class BasePartitionUpsertMetadataManager
implements PartitionUps
continue;
}
try {
-
segment.persistDocIdsSnapshot(V1Constants.VALID_DOC_IDS_SNAPSHOT_FILE_NAME,
segment.getValidDocIds());
+ ThreadSafeMutableRoaringBitmap segmentQueryableDocIdsBitMap = null;
+ ThreadSafeMutableRoaringBitmap segmentValidDocIdsBitMap =
+ segment.getValidDocIds() == null ? new
ThreadSafeMutableRoaringBitmap() : segment.getValidDocIds();
+
segment.persistDocIdsSnapshot(V1Constants.VALID_DOC_IDS_SNAPSHOT_FILE_NAME,
segmentValidDocIdsBitMap);
if (_deleteRecordColumn != null) {
+ segmentQueryableDocIdsBitMap = segment.getQueryableDocIds() ==
null ? new ThreadSafeMutableRoaringBitmap()
+ : segment.getQueryableDocIds();
segment.persistDocIdsSnapshot(V1Constants.QUERYABLE_DOC_IDS_SNAPSHOT_FILE_NAME,
- segment.getQueryableDocIds());
+ segmentQueryableDocIdsBitMap);
}
_updatedSegmentsSinceLastSnapshot.remove(segment);
numImmutableSegments++;
- numPrimaryKeysInSnapshot +=
segment.getValidDocIds().getMutableRoaringBitmap().getCardinality();
+ numPrimaryKeysInSnapshot +=
segmentValidDocIdsBitMap.getMutableRoaringBitmap().getCardinality();
if (_deleteRecordColumn != null) {
- numQueryableDocIdsInSnapshot +=
segment.getQueryableDocIds().getMutableRoaringBitmap().getCardinality();
+ numQueryableDocIdsInSnapshot +=
segmentQueryableDocIdsBitMap.getMutableRoaringBitmap().getCardinality();
}
} catch (Exception e) {
_logger.warn("Caught exception while taking snapshot for segment: {}
w/o snapshot, skipping", segmentName, e);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]