Fixed assertion error related with transaction usage in StatsCollector and AlertManagerImpl

This commit is contained in:
alena 2010-09-03 17:14:20 -07:00
parent 74d91c5b3a
commit acabd549a6
2 changed files with 10 additions and 8 deletions

View File

@ -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");

View File

@ -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();