wardlican opened a new pull request, #4002:
URL: https://github.com/apache/amoro/pull/4002

   
   
   ## Why are the changes needed?
   TaskRuntime.stateLock and TableOptimizingProcess.lock can cause 
deadlocks.This can cause tables in a certain resource group to malfunction, and 
OptimizerKeeper will also fail to function properly.
   
   Close #4001.
   
   ## Brief change log
   ### Fixes Implemented:
   #### The following fixes have been implemented:
   
   1. Modified the `completeTask` method (lines 565-577):
   
   - First, call `taskRuntime.complete()` (acquire and release the database 
lock).
   - After the database lock is released, acquire 
`TableOptimizingProcess.this.lock` and call `acceptResult`.
   - Ensure the lock acquisition order is consistent: acquire 
`TableOptimizingProcess.this.lock` first, then acquire the database lock.
   
   2. Removed the `whenCompleted` callback registration (lines 910-922 and 
932-945):
   
   - Avoid synchronously calling `acceptResult` while holding the database lock.
   - Instead, explicitly call `acceptResult` within `completeTask`.
   
   3. Modified the `cancelTasks` method (lines 897-902):
   
   - First, cancel all tasks (acquire and release the database lock).
   - Then call `acceptResult` for each canceled task (while holding 
`TableOptimizingProcess.this.lock`).
   
   -
   
   ## How was this patch tested?
   
   - [ ] Add some test cases that check the changes thoroughly including 
negative and positive cases if possible
   
   - [ ] Add screenshots for manual tests if appropriate
   
   - [ ] Run test locally before making a pull request
   
   ## Documentation
   
   - Does this pull request introduce a new feature? (yes / no)
   - If yes, how is the feature documented? (not applicable / docs / JavaDocs / 
not documented)
   


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

Reply via email to