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]

Reply via email to