liaoxin01 opened a new pull request, #61684:
URL: https://github.com/apache/doris/pull/61684

   ## Problem
   When a queued memtable flush task starts after `FlushToken::cancel()` has 
already marked the token shutdown, `_flush_memtable()` can return before the 
old `flush_running_count++` path but still run the deferred 
`flush_running_count--`. This can drive the counter below zero and make 
`cancel()` wait forever for `flush_running_count == 0`.
   
   ## Fix
   Move `flush_running_count++` to the top of `_flush_memtable()` before 
registering the deferred cleanup so the running-count accounting stays 
symmetric on every exit path.
   
   ## Validation
   - Reasoned from production stack and gdb evidence showing 
`flush_running_count = -1` while cancel was blocked in 
`_wait_running_task_finish()`
   - Not run locally: the BE UT environment in this workspace would require a 
full initial `ut_build_ASAN` build


-- 
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]

Reply via email to