github-actions[bot] commented on code in PR #67046:
URL: https://github.com/apache/doris/pull/67046#discussion_r3863729498
##########
be/src/agent/task_worker_pool.cpp:
##########
@@ -2582,17 +2582,30 @@ void clean_trash_callback(StorageEngine& engine, const
TAgentTaskRequest& req) {
void clean_udf_cache_callback(const TAgentTaskRequest& req) {
const auto& clean_req = req.clean_udf_cache_req;
-
- if (doris::config::enable_java_support) {
-
static_cast<void>(Jni::Util::clean_udf_class_load_cache(clean_req.function_signature));
+ if (clean_req.__isset.function_id && clean_req.function_id <= 0) {
Review Comment:
[P2] Preserve cleanup for explicitly invalid legacy IDs
At the base SHA, `DropFunctionCommand` always sets this optional field and
initializes it to `-1` when its separate lookup misses. During a BE-first
rolling upgrade, D1 can miss `f`, D2 can create/execute/cache generation N, and
D1's later drop can remove N while still sending an explicitly-set `-1`. This
new return then skips even the Java signature cleanup that the base BE
performed; N has no catalog row or time eviction left to reclaim its loader.
This is distinct from the unset-ID fallback because `__isset.function_id` is
true. Please provide a collision-safe or bounded-reclamation path for this
legacy wire state (or capability-gate/backport the atomic ID contract), and
cover the pause-create/cache-drop interleaving.
--
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]