218-222 upgrade - no need to update user statistics with deviceId if account doesn't own any domRs

This commit is contained in:
alena 2011-04-15 09:45:19 -07:00
parent ce984ce89c
commit 234917780e
2 changed files with 43 additions and 27 deletions

View File

@ -1101,6 +1101,7 @@ public class Upgrade218to22 implements DbUpgrade {
ResultSet dcSet = pstmt.executeQuery();
if (!dcSet.next()) {
s_logger.error("Unable to get data_center information as a part of user_statistics update");
throw new CloudRuntimeException("Unable to get data_center information as a part of user_statistics update");
}
@ -1113,17 +1114,31 @@ public class Upgrade218to22 implements DbUpgrade {
pstmt = conn.prepareStatement("SELECT id from vm_instance where account_id=? AND data_center_id=? AND type='DomainRouter'");
pstmt.setLong(1, accountId);
pstmt.setLong(2, dataCenterId);
s_logger.debug("Query is " + pstmt);
ResultSet rs1 = pstmt.executeQuery();
if (!rs1.next()) {
throw new CloudRuntimeException("Unable to update user_statistics table with device id");
}
// check if there are any non-removed user vms existing for this account
// if all vms are expunged, and there is no domR, just skip this record
pstmt = conn.prepareStatement("SELECT * from vm_instance where account_id=? AND data_center_id=? AND removed IS NULL");
pstmt.setLong(1, accountId);
pstmt.setLong(2, dataCenterId);
ResultSet nonRemovedVms = pstmt.executeQuery();
if (nonRemovedVms.next()) {
s_logger.error("Unable to update user_statistics table with device id");
throw new CloudRuntimeException("Unable to update user_statistics table with device id");
} else {
s_logger.debug("Account id=" + accountId + " doesn't own any user vms and domRs, so skipping user_statistics update");
continue;
}
}
Long deviceId = rs1.getLong(1);
pstmt = conn.prepareStatement("UPDATE user_statistics SET device_id=? where id=?");
pstmt.setLong(1, deviceId);
pstmt.setLong(2, id);
s_logger.debug("Query is " + pstmt);
pstmt.executeUpdate();
pstmt = conn.prepareStatement("");

View File

@ -190,33 +190,34 @@ public class Upgrade222to224 implements DbUpgrade {
Long id = rs.getLong(1);
Long instanceId = rs.getLong(2);
// Check if domR is already expunged; we shouldn't update user stats in this case as nics are gone too
pstmt = conn.prepareStatement("SELECT * from vm_instance where id=? and removed is not null");
pstmt.setLong(1, instanceId);
ResultSet rs1 = pstmt.executeQuery();
if (instanceId != null && instanceId.longValue() != 0) {
// Check if domR is already expunged; we shouldn't update user stats in this case as nics are gone too
pstmt = conn.prepareStatement("SELECT * from vm_instance where id=? and removed is not null");
pstmt.setLong(1, instanceId);
ResultSet rs1 = pstmt.executeQuery();
if (rs1.next()) {
s_logger.debug("Not updating user_statistics table for domR id=" + instanceId + " as domR is already expunged");
continue;
if (rs1.next()) {
s_logger.debug("Not updating user_statistics table for domR id=" + instanceId + " as domR is already expunged");
continue;
}
pstmt = conn.prepareStatement("SELECT network_id FROM nics WHERE instance_id=? AND mode='Dhcp'");
pstmt.setLong(1, instanceId);
ResultSet rs2 = pstmt.executeQuery();
if (!rs2.next()) {
throw new CloudRuntimeException("Failed to update user_statistics table as a part of 222 to 224 upgrade: couldn't get network_id from nics table");
}
Long networkId = rs2.getLong(1);
if (networkId != null) {
pstmt = conn.prepareStatement("UPDATE user_statistics SET network_id=? where id=?");
pstmt.setLong(1, networkId);
pstmt.setLong(2, id);
pstmt.executeUpdate();
}
}
pstmt = conn.prepareStatement("SELECT network_id FROM nics WHERE instance_id=? AND mode='Dhcp'");
pstmt.setLong(1, instanceId);
ResultSet rs2 = pstmt.executeQuery();
if (!rs2.next()) {
throw new CloudRuntimeException("Failed to update user_statistics table as a part of 222 to 224 upgrade: couldn't get network_id from nics table");
}
Long networkId = rs2.getLong(1);
if (networkId != null) {
pstmt = conn.prepareStatement("UPDATE user_statistics SET network_id=? where id=?");
pstmt.setLong(1, networkId);
pstmt.setLong(2, id);
pstmt.executeUpdate();
}
}
s_logger.debug("Successfully update user_statistics table with network_ids as a part of 222 to 224 upgrade");