From acabd549a6d6bc0bbbfcdb65c18d8660dd042c09 Mon Sep 17 00:00:00 2001 From: alena Date: Fri, 3 Sep 2010 17:14:20 -0700 Subject: [PATCH] Fixed assertion error related with transaction usage in StatsCollector and AlertManagerImpl --- server/src/com/cloud/alert/AlertManagerImpl.java | 4 ++-- server/src/com/cloud/server/StatsCollector.java | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/server/src/com/cloud/alert/AlertManagerImpl.java b/server/src/com/cloud/alert/AlertManagerImpl.java index 112c96dd2d3..2471f851cb0 100644 --- a/server/src/com/cloud/alert/AlertManagerImpl.java +++ b/server/src/com/cloud/alert/AlertManagerImpl.java @@ -66,6 +66,7 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.component.ComponentLocator; +import com.cloud.utils.db.DB; import com.cloud.utils.db.GlobalLock; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; @@ -325,7 +326,7 @@ public class AlertManagerImpl implements AlertManager { } } - @Override + @Override @DB public void recalculateCapacity() { // FIXME: the right way to do this is to register a listener (see RouterStatsListener, VMSyncListener) // for the vm sync state. The listener model has connects/disconnects to keep things in sync much better @@ -460,7 +461,6 @@ public class AlertManagerImpl implements AlertManager { s_logger.trace("Done with capacity update"); } txn.commit(); - s_logger.trace(""); } catch (Exception ex) { txn.rollback(); s_logger.error("Unable to start transaction for capacity update"); diff --git a/server/src/com/cloud/server/StatsCollector.java b/server/src/com/cloud/server/StatsCollector.java index 2aa578396f8..4f3d04de57b 100644 --- a/server/src/com/cloud/server/StatsCollector.java +++ b/server/src/com/cloud/server/StatsCollector.java @@ -59,6 +59,7 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.utils.NumbersUtil; import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.concurrency.NamedThreadFactory; +import com.cloud.utils.db.DB; import com.cloud.utils.db.GlobalLock; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; @@ -254,7 +255,8 @@ public class StatsCollector { return _VmStats.get(id); } - class StorageCollector implements Runnable { + class StorageCollector implements Runnable { + @DB public void run() { try { SearchCriteria sc = _hostDao.createSearchCriteria(); @@ -347,11 +349,11 @@ public class StatsCollector { txn.start(); _capacityDao.clearStorageCapacities(); - for (CapacityVO newCapacity : newCapacities) { - s_logger.trace("Executing capacity update"); - _capacityDao.persist(newCapacity); - s_logger.trace("Done with capacity update"); - } + for (CapacityVO newCapacity : newCapacities) { + s_logger.trace("Executing capacity update"); + _capacityDao.persist(newCapacity); + s_logger.trace("Done with capacity update"); + } txn.commit(); } catch (Exception ex) { txn.rollback();