github-actions[bot] commented on code in PR #68328:
URL: https://github.com/apache/doris/pull/68328#discussion_r4119554066
##########
be/src/service/internal_service.cpp:
##########
@@ -536,7 +565,7 @@ void
PInternalService::tablet_writer_cancel(google::protobuf::RpcController* con
const PTabletWriterCancelRequest*
request,
PTabletWriterCancelResult*
response,
google::protobuf::Closure* done) {
- bool ret = _heavy_work_pool.try_offer([this, request, done]() {
+ bool ret = _load_light_work_pool.try_offer([this, request, done]() {
Review Comment:
[P1] A cancel can now overtake an earlier `tablet_writer_open` that is
queued behind saturated heavy workers. `LoadChannelMgr::cancel` records the
load ID as canceled, but `LoadChannelMgr::open` does not check that record:
when the queued open eventually runs, it creates a new live channel, and later
add-blocks find that channel instead of the cancellation record. The former
shared FIFO queue kept these queued RPCs in order. Please make an earlier
cancel prevent a later open from recreating the load (or preserve per-load
ordering across the pools).
##########
be/src/service/internal_service.cpp:
##########
@@ -549,7 +578,7 @@ void
PInternalService::tablet_writer_cancel(google::protobuf::RpcController* con
}
});
if (!ret) {
- offer_failed(response, done, _heavy_work_pool);
+ offer_failed(response, done, _load_light_work_pool);
Review Comment:
[P2] This rejection can lose a load cancellation. `TabletsChannel::close`
holds its lock while waiting for flush and commit, and
`BaseTabletsChannel::cancel` waits for that lock; 32 such waits occupy every
default worker in this new pool. On an eight-core BE, once its 1,024-entry
queue fills, this `offer_failed` path only logs because
`PTabletWriterCancelResult` has no status field, and the sender's dummy
callback does not retry. The rejected load channel can remain active until
normal completion or background timeout cleanup (whose default timeout floor is
20 minutes since its last update). The former heavy pool has 128 workers and a
10,240-entry queue on that BE, so this failure occurs at a substantially
smaller cancellation burst. Please ensure rejected cancels are recorded or
retried.
--
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]