Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6A90D10A07 for ; Mon, 30 Sep 2013 23:13:50 +0000 (UTC) Received: (qmail 77889 invoked by uid 500); 30 Sep 2013 23:13:50 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 77872 invoked by uid 500); 30 Sep 2013 23:13:50 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 77857 invoked by uid 99); 30 Sep 2013 23:13:50 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 30 Sep 2013 23:13:50 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 04D80833BDD; Mon, 30 Sep 2013 23:13:49 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: darren@apache.org To: commits@cloudstack.apache.org Date: Mon, 30 Sep 2013 23:13:50 -0000 Message-Id: <5a088c1141b14294950261fa59bf3a41@git.apache.org> In-Reply-To: <4c2dcd83e3314b6898c2e16d46dbd881@git.apache.org> References: <4c2dcd83e3314b6898c2e16d46dbd881@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [2/8] Managed Context http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java index 52e20f0..1cddfa7 100644 --- a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java @@ -38,6 +38,8 @@ import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.jobs.AsyncJobManager; import org.apache.cloudstack.framework.jobs.dao.AsyncJobDao; import org.apache.cloudstack.framework.jobs.impl.AsyncJobVO; +import org.apache.cloudstack.managed.context.ManagedContext; +import org.apache.cloudstack.managed.context.ManagedContextTimerTask; import com.cloud.api.ApiDispatcher; import com.cloud.api.ApiGsonHelper; @@ -371,17 +373,14 @@ public class SnapshotSchedulerImpl extends ManagerBase implements SnapshotSchedu _testClockTimer.schedule(_testTimerTask, 100*1000L, 60*1000L); } else { - TimerTask timerTask = new TimerTask() { + TimerTask timerTask = new ManagedContextTimerTask() { @Override - public void run() { - ServerContexts.registerSystemContext(); + protected void runInContext() { try { Date currentTimestamp = new Date(); poll(currentTimestamp); } catch (Throwable t) { s_logger.warn("Catch throwable in snapshot scheduler ", t); - } finally { - ServerContexts.unregisterSystemContext(); } } }; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/server/src/com/cloud/storage/upload/UploadListener.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/upload/UploadListener.java b/server/src/com/cloud/storage/upload/UploadListener.java index 09db421..add5877 100755 --- a/server/src/com/cloud/storage/upload/UploadListener.java +++ b/server/src/com/cloud/storage/upload/UploadListener.java @@ -27,7 +27,6 @@ import javax.inject.Inject; import org.apache.log4j.Level; import org.apache.log4j.Logger; - import org.apache.cloudstack.api.command.user.iso.ExtractIsoCmd; import org.apache.cloudstack.api.command.user.template.ExtractTemplateCmd; import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd; @@ -38,6 +37,7 @@ import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector; import org.apache.cloudstack.framework.async.AsyncCompletionCallback; import org.apache.cloudstack.framework.jobs.AsyncJobManager; import org.apache.cloudstack.jobs.JobInfo; +import org.apache.cloudstack.managed.context.ManagedContextTimerTask; import com.cloud.agent.Listener; import com.cloud.agent.api.AgentControlAnswer; @@ -63,7 +63,7 @@ import com.cloud.utils.exception.CloudRuntimeException; public class UploadListener implements Listener { - private static final class StatusTask extends TimerTask { + private static final class StatusTask extends ManagedContextTimerTask { private final UploadListener ul; private final RequestType reqType; @@ -73,13 +73,13 @@ public class UploadListener implements Listener { } @Override - public void run() { + protected void runInContext() { ul.sendCommand(reqType); } } - private static final class TimeoutTask extends TimerTask { + private static final class TimeoutTask extends ManagedContextTimerTask { private final UploadListener ul; public TimeoutTask(UploadListener ul) { @@ -87,7 +87,7 @@ public class UploadListener implements Listener { } @Override - public void run() { + protected void runInContext() { ul.checkProgress(); } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/server/src/com/cloud/storage/upload/UploadMonitorImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java index 12378de..4eb4900 100755 --- a/server/src/com/cloud/storage/upload/UploadMonitorImpl.java +++ b/server/src/com/cloud/storage/upload/UploadMonitorImpl.java @@ -34,13 +34,13 @@ import javax.naming.ConfigurationException; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; - import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager; import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.jobs.AsyncJobManager; +import org.apache.cloudstack.managed.context.ManagedContextRunnable; import org.apache.cloudstack.storage.datastore.db.ImageStoreVO; import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO; import org.apache.cloudstack.storage.image.datastore.ImageStoreEntity; @@ -441,13 +441,13 @@ public class UploadMonitorImpl extends ManagerBase implements UploadMonitor { } - protected class StorageGarbageCollector implements Runnable { + protected class StorageGarbageCollector extends ManagedContextRunnable { public StorageGarbageCollector() { } @Override - public void run() { + protected void runInContext() { try { GlobalLock scanLock = GlobalLock.getInternLock("uploadmonitor.storageGC"); try { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/server/src/com/cloud/template/TemplateManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/template/TemplateManagerImpl.java b/server/src/com/cloud/template/TemplateManagerImpl.java index 5240102..c1ce892 100755 --- a/server/src/com/cloud/template/TemplateManagerImpl.java +++ b/server/src/com/cloud/template/TemplateManagerImpl.java @@ -73,6 +73,7 @@ import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.jobs.AsyncJobManager; +import org.apache.cloudstack.managed.context.ManagedContextRunnable; import org.apache.cloudstack.storage.command.AttachCommand; import org.apache.cloudstack.storage.command.CommandResult; import org.apache.cloudstack.storage.command.DettachCommand; @@ -488,9 +489,9 @@ public class TemplateManagerImpl extends ManagerBase implements TemplateManager, for (final StoragePoolVO pool : pools) { if (pool.getDataCenterId() == zoneId) { s_logger.info("Schedule to preload template " + template.getId() + " into primary storage " + pool.getId()); - _preloadExecutor.execute(new Runnable() { + _preloadExecutor.execute(new ManagedContextRunnable() { @Override - public void run() { + protected void runInContext() { try { reallyRun(); } catch (Throwable e) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/server/src/com/cloud/user/AccountManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index 396319a..078ed34 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -53,6 +53,7 @@ import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.ServerContexts; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.managed.context.ManagedContextRunnable; import org.apache.cloudstack.region.gslb.GlobalLoadBalancerRuleDao; import com.cloud.api.ApiDBUtils; @@ -1492,18 +1493,10 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M return _userDao.remove(id); } - public class ResourceCountCalculateTask implements Runnable { + protected class AccountCleanupTask extends ManagedContextRunnable { @Override - public void run() { - - } - } - - protected class AccountCleanupTask implements Runnable { - @Override - public void run() { + protected void runInContext() { try { - ServerContexts.registerSystemContext(); GlobalLock lock = GlobalLock.getInternLock("AccountCleanup"); if (lock == null) { s_logger.debug("Couldn't get the global lock"); @@ -1585,7 +1578,6 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M s_logger.error("Exception ", e); } finally { lock.unlock(); - ServerContexts.unregisterSystemContext(); } } catch (Exception e) { s_logger.error("Exception ", e); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/server/src/com/cloud/vm/SystemVmLoadScanner.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/SystemVmLoadScanner.java b/server/src/com/cloud/vm/SystemVmLoadScanner.java index 3932c3b..6e55216 100644 --- a/server/src/com/cloud/vm/SystemVmLoadScanner.java +++ b/server/src/com/cloud/vm/SystemVmLoadScanner.java @@ -21,8 +21,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.apache.log4j.Logger; - -import org.apache.cloudstack.context.ServerContexts; +import org.apache.cloudstack.managed.context.ManagedContextRunnable; import com.cloud.utils.Pair; import com.cloud.utils.concurrency.NamedThreadFactory; @@ -64,17 +63,14 @@ public class SystemVmLoadScanner { } private Runnable getCapacityScanTask() { - return new Runnable() { + return new ManagedContextRunnable() { @Override - public void run() { - ServerContexts.registerSystemContext(); + protected void runInContext() { try { reallyRun(); } catch (Throwable e) { s_logger.warn("Unexpected exception " + e.getMessage(), e); - } finally { - ServerContexts.unregisterSystemContext(); } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/server/src/com/cloud/vm/UserVmManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 9b694e1..aa2d98b 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -72,6 +72,7 @@ import org.apache.cloudstack.framework.config.ConfigKey; import org.apache.cloudstack.framework.config.Configurable; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.jobs.AsyncJobManager; +import org.apache.cloudstack.managed.context.ManagedContextRunnable; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.cloudstack.storage.to.TemplateObjectTO; @@ -1708,13 +1709,12 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir } } - protected class ExpungeTask implements Runnable { + protected class ExpungeTask extends ManagedContextRunnable { public ExpungeTask() { } @Override - public void run() { - ServerContexts.registerSystemContext(); + protected void runInContext() { GlobalLock scanLock = GlobalLock.getInternLock("UserVMExpunge"); try { if (scanLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_COOPERATION)) { @@ -1748,7 +1748,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir } } finally { scanLock.releaseRef(); - ServerContexts.unregisterSystemContext(); } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/usage/src/com/cloud/usage/UsageManagerImpl.java ---------------------------------------------------------------------- diff --git a/usage/src/com/cloud/usage/UsageManagerImpl.java b/usage/src/com/cloud/usage/UsageManagerImpl.java index 90ce4db..d2a7cc0 100644 --- a/usage/src/com/cloud/usage/UsageManagerImpl.java +++ b/usage/src/com/cloud/usage/UsageManagerImpl.java @@ -35,10 +35,9 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.log4j.Logger; - import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.cloudstack.managed.context.ManagedContext; import org.apache.cloudstack.usage.UsageTypes; - import org.springframework.stereotype.Component; import com.cloud.alert.AlertManager; @@ -120,6 +119,7 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna @Inject protected UsageEventDao _usageEventDao; @Inject ConfigurationDao _configDao; @Inject private UsageVMSnapshotDao m_usageVMSnapshotDao; + @Inject ManagedContext _managedContext; private String m_version = null; private final Calendar m_jobExecTime = Calendar.getInstance(); @@ -279,7 +279,17 @@ public class UsageManagerImpl extends ManagerBase implements UsageManager, Runna return true; } + @Override public void run() { + _managedContext.runWithContext(new Runnable() { + @Override + public void run() { + runInContext(); + } + }); + } + + protected void runInContext() { if (s_logger.isInfoEnabled()) { s_logger.info("starting usage job..."); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/usage/src/com/cloud/usage/parser/UsageParser.java ---------------------------------------------------------------------- diff --git a/usage/src/com/cloud/usage/parser/UsageParser.java b/usage/src/com/cloud/usage/parser/UsageParser.java index 410e876..80437d5 100644 --- a/usage/src/com/cloud/usage/parser/UsageParser.java +++ b/usage/src/com/cloud/usage/parser/UsageParser.java @@ -18,12 +18,13 @@ package com.cloud.usage.parser; import java.util.Date; +import org.apache.cloudstack.managed.context.ManagedContextRunnable; import org.apache.log4j.Logger; -public abstract class UsageParser implements Runnable { +public abstract class UsageParser extends ManagedContextRunnable { public static final Logger s_logger = Logger.getLogger(UsageParser.class.getName()); - public void run() { + protected void runInContext() { try { parse(null); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c8c064c6/utils/pom.xml ---------------------------------------------------------------------- diff --git a/utils/pom.xml b/utils/pom.xml index 09c9602..3eea8fe 100644 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -26,16 +26,33 @@ 4.3.0-SNAPSHOT ../pom.xml - + + + org.apache.cloudstack + cloud-framework-managed-context + ${project.version} + org.springframework spring-context + org.aspectj + aspectjweaver + + log4j log4j + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + + cglib cglib-nodep