From 5f8450f28f1272bb2a3b73e3a5c88e717cb6e910 Mon Sep 17 00:00:00 2001 From: dahn Date: Fri, 19 Apr 2024 09:18:41 +0200 Subject: [PATCH] Add a shutdownhook to remove jobs owned by the process (#8896) Co-authored-by: Suresh Kumar Anaparti --- .../java/com/cloud/usage/UsageManagerImpl.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/usage/src/main/java/com/cloud/usage/UsageManagerImpl.java b/usage/src/main/java/com/cloud/usage/UsageManagerImpl.java index dd838f2f3ff..29f8a8decdd 100644 --- a/usage/src/main/java/com/cloud/usage/UsageManagerImpl.java +++ b/usage/src/main/java/com/cloud/usage/UsageManagerImpl.java @@ -316,6 +316,7 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna _sanity = _sanityExecutor.scheduleAtFixedRate(new SanityCheck(), 1, _sanityCheckInterval, TimeUnit.DAYS); } + Runtime.getRuntime().addShutdownHook(new AbandonJob()); TransactionLegacy usageTxn = TransactionLegacy.open(TransactionLegacy.USAGE_DB); try { if (_heartbeatLock.lock(3)) { // 3 second timeout @@ -345,9 +346,11 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna if (_sanity != null) { _sanity.cancel(true); } + return true; } + @Override public void run() { (new ManagedContextRunnable() { @@ -2183,4 +2186,17 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna } } } + private class AbandonJob extends Thread { + @Override + public void run() { + s_logger.info("exitting Usage Manager"); + deleteOpenjob(); + } + private void deleteOpenjob() { + UsageJobVO job = _usageJobDao.isOwner(_hostname, _pid); + if (job != null) { + _usageJobDao.remove(job.getId()); + } + } + } }