Optimize UsageJobDaoImpl.updateJobSuccess to use direct UPDATE instead of row-level lock#13160
Optimize UsageJobDaoImpl.updateJobSuccess to use direct UPDATE instead of row-level lock#13160vishesh92 wants to merge 1 commit into
Conversation
…d of row-level lock Replace lockRow + explicit transaction with a single update(jobId, jobForUpdate) call. All field values are parameters passed by the caller — nothing is read from the locked row. The TransactionLegacy.open(USAGE_DB) is kept since this method explicitly targets the usage database. The txn.start/commit/rollback are removed since the single update() call is autocommit. The lock was redundant because the usage server model is single-owner: one server processes one job at a time.
|
@blueorangutan package |
|
@vishesh92 a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## 4.22 #13160 +/- ##
============================================
- Coverage 17.67% 17.67% -0.01%
+ Complexity 15792 15787 -5
============================================
Files 5922 5922
Lines 533123 533119 -4
Branches 65201 65201
============================================
- Hits 94246 94239 -7
+ Misses 428236 428234 -2
- Partials 10641 10646 +5
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Removes the explicit row-level lock and surrounding transaction (start/commit/rollback) in UsageJobDaoImpl.updateJobSuccess, relying on a single autocommit update(jobId, jobForUpdate) against the usage DB. The TransactionLegacy.open(USAGE_DB) is preserved to bind the update to the usage database connection. Justified by the single-owner usage server model where concurrent updates to the same job row do not occur.
Changes:
- Drop
lockRow(jobId, ...)and the explicittxn.start()/txn.commit()/txn.rollback()calls. - Replace
update(job.getId(), ...)withupdate(jobId, ...)sincejob.getId()was always equal tojobId.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Description
Replace lockRow + explicit transaction with a single update(jobId, jobForUpdate) call. All field values are parameters passed by the caller — nothing is read from the locked row.
The TransactionLegacy.open(USAGE_DB) is kept since this method explicitly targets the usage database. The txn.start/commit/rollback are removed since the single update() call is autocommit.
The lock was redundant because the usage server model is single-owner: one server processes one job at a time.
Types of changes
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
Bug Severity
Screenshots (if appropriate):
How Has This Been Tested?
Compilation and static analysis:
Code-level verification:
Behavioral equivalence: