This is an automated email from the ASF dual-hosted git repository.
jackie 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 49faa9424a register the new segment when it's fully initalized by
partitionUpsertMetadataManager (#11964)
49faa9424a is described below
commit 49faa9424a96c6519c741843b461ff510b7efe4a
Author: Xiaobing <[email protected]>
AuthorDate: Tue Nov 7 23:36:13 2023 -0800
register the new segment when it's fully initalized by
partitionUpsertMetadataManager (#11964)
---
.../pinot/core/data/manager/realtime/RealtimeTableDataManager.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/data/manager/realtime/RealtimeTableDataManager.java
b/pinot-core/src/main/java/org/apache/pinot/core/data/manager/realtime/RealtimeTableDataManager.java
index 05d00c5ca0..5aa08dd61f 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/data/manager/realtime/RealtimeTableDataManager.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/data/manager/realtime/RealtimeTableDataManager.java
@@ -526,17 +526,21 @@ public class RealtimeTableDataManager extends
BaseTableDataManager {
immutableSegment.getSegmentMetadata().getTotalDocs());
_serverMetrics.addValueToTableGauge(_tableNameWithType,
ServerGauge.SEGMENT_COUNT, 1L);
ImmutableSegmentDataManager newSegmentManager = new
ImmutableSegmentDataManager(immutableSegment);
- SegmentDataManager oldSegmentManager = registerSegment(segmentName,
newSegmentManager);
+ // Register the new segment after it is fully initialized by
partitionUpsertMetadataManager, e.g. to fill up its
+ // validDocId bitmap. Otherwise, the query can return wrong results, if
accessing the premature segment.
+ SegmentDataManager oldSegmentManager =
_segmentDataManagerMap.get(segmentName);
if (oldSegmentManager == null) {
if (_tableUpsertMetadataManager.isPreloading()) {
partitionUpsertMetadataManager.preloadSegment(immutableSegment);
} else {
partitionUpsertMetadataManager.addSegment(immutableSegment);
}
+ registerSegment(segmentName, newSegmentManager);
_logger.info("Added new immutable segment: {} to upsert-enabled table:
{}", segmentName, _tableNameWithType);
} else {
IndexSegment oldSegment = oldSegmentManager.getSegment();
partitionUpsertMetadataManager.replaceSegment(immutableSegment,
oldSegment);
+ registerSegment(segmentName, newSegmentManager);
_logger.info("Replaced {} segment: {} of upsert-enabled table: {}",
oldSegment instanceof ImmutableSegment ? "immutable" : "mutable",
segmentName, _tableNameWithType);
releaseSegment(oldSegmentManager);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]