github-actions[bot] commented on code in PR #65373:
URL: https://github.com/apache/doris/pull/65373#discussion_r3551654941
##########
regression-test/plugins/plugin_compaction.groovy:
##########
@@ -177,9 +181,27 @@ Suite.metaClass.trigger_and_wait_compaction = { String
table_name, String compac
}
def success_time_unchanged = (oldStatus["last
${compaction_type} success time"] == tabletStatus["last ${compaction_type}
success time"])
def failure_time_unchanged = (oldStatus["last
${compaction_type} failure time"] == tabletStatus["last ${compaction_type}
failure time"])
- def currentCompactionTimestampChanged =
!success_time_unchanged || !failure_time_unchanged
+ def compactionFailureIgnored =
+ !failure_time_unchanged &&
isIgnoredCompactionStatus(tabletStatus["last ${compaction_type} status"])
+ def baseFailureTimeChanged =
handedOffToBaseCompactionAfterDeleteVersion &&
+ oldStatus["last base failure time"] !=
tabletStatus["last base failure time"]
+ def baseFailureIgnored = baseFailureTimeChanged &&
isIgnoredCompactionStatus(tabletStatus["last base status"])
+ if (!running && !handedOffToBaseCompactionAfterDeleteVersion &&
+ !completedByBaseCompactionAfterDeleteVersion &&
+ success_time_unchanged && !failure_time_unchanged &&
!compactionFailureIgnored) {
Review Comment:
This now turns any failure timestamp change into a hard failure unless the
caller explicitly passes that status in `ignored_errors`, but Doris also
records benign no-op compaction outcomes in the same failure timestamp fields.
For example, a manual full compaction with no suitable input rowsets returns
`FULL_NO_SUITABLE_VERSION` (`E-2008`): `FullCompaction::prepare_compact()`
records the last full status/failure time, while
`Tablet::prepare_compaction_and_calculate_permits()` then treats that status as
OK with zero permits and no compaction work. Existing callers of
`trigger_and_wait_compaction(table, "full")` do not pass `ignored_errors`, so a
valid no-op full compaction can now fail here as `compaction failed`. Please
keep the helper's wait-phase classification aligned with the BE no-op statuses,
for example by treating the same no-suitable status codes as non-fatal instead
of throwing.
--
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]