github-actions[bot] commented on code in PR #64560:
URL: https://github.com/apache/doris/pull/64560#discussion_r3449691045
##########
be/src/storage/rowset/beta_rowset_writer.cpp:
##########
@@ -541,6 +568,12 @@ Status
BetaRowsetWriter::_find_longest_consecutive_small_segment(
int32_t segid;
for (segid = _segcompacted_point;
segid < last_segment && segments->size() <
config::segcompaction_batch_size; segid++) {
+ if (!_is_segment_delete_bitmap_calculated(segid)) {
Review Comment:
The gate prevents the immediate race, but it also drops the compaction
attempt permanently when all triggers happen while delete bitmap work is still
pending. `_segcompaction_if_necessary()` is only called from `add_segment()`:
if this check breaks for segment 0 on each trigger, `build()` later waits for
`_calc_delete_bitmap_token`, then `_close_file_writers()` only calls
`_segcompaction_rename_last_segments()` when `is_segcompacted()` is already
true. There is no retry after the bitmaps become ready, so a fast MoW load can
keep every small segment un-compacted and then fail the final segment-count
check once it exceeds `max_segment_num_per_rowset`, even though segment
compaction is enabled. Please re-run the selection after the token wait, or
make the pending-bitmap case wait/reschedule instead of just returning with no
future trigger.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]