Skip to content

Commit 7c6a7f0

Browse files
winterhazeldhslove
authored andcommitted
Fix Usage inconsistencies (apache#9888)
1 parent 2a1b874 commit 7c6a7f0

File tree

3 files changed

+21
-18
lines changed

3 files changed

+21
-18
lines changed

engine/schema/src/main/java/com/cloud/usage/dao/UsageNetworksDaoImpl.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
// under the License.
1717
package com.cloud.usage.dao;
1818

19-
import com.cloud.network.Network;
2019
import com.cloud.usage.UsageNetworksVO;
2120
import com.cloud.utils.DateUtil;
2221
import com.cloud.utils.db.GenericDaoBase;
@@ -70,11 +69,10 @@ public void remove(long networkId, Date removed) {
7069
SearchCriteria<UsageNetworksVO> sc = this.createSearchCriteria();
7170
sc.addAnd("networkId", SearchCriteria.Op.EQ, networkId);
7271
sc.addAnd("removed", SearchCriteria.Op.NULL);
73-
UsageNetworksVO vo = findOneBy(sc);
74-
if (vo != null) {
75-
vo.setRemoved(removed);
76-
vo.setState(Network.State.Destroy.name());
77-
update(vo.getId(), vo);
72+
List<UsageNetworksVO> usageNetworksVOs = listBy(sc);
73+
for (UsageNetworksVO entry : usageNetworksVOs) {
74+
entry.setRemoved(removed);
75+
update(entry.getId(), entry);
7876
}
7977
} catch (final Exception e) {
8078
txn.rollback();

engine/schema/src/main/java/com/cloud/usage/dao/UsageVpcDaoImpl.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
// under the License.
1717
package com.cloud.usage.dao;
1818

19-
import com.cloud.network.vpc.Vpc;
2019
import com.cloud.usage.UsageVpcVO;
2120
import com.cloud.utils.DateUtil;
2221
import com.cloud.utils.db.GenericDaoBase;
@@ -64,11 +63,10 @@ public void remove(long vpcId, Date removed) {
6463
SearchCriteria<UsageVpcVO> sc = this.createSearchCriteria();
6564
sc.addAnd("vpcId", SearchCriteria.Op.EQ, vpcId);
6665
sc.addAnd("removed", SearchCriteria.Op.NULL);
67-
UsageVpcVO vo = findOneBy(sc);
68-
if (vo != null) {
69-
vo.setRemoved(removed);
70-
vo.setState(Vpc.State.Inactive.name());
71-
update(vo.getId(), vo);
66+
List<UsageVpcVO> usageVpcVOs = listBy(sc);
67+
for (UsageVpcVO entry : usageVpcVOs) {
68+
entry.setRemoved(removed);
69+
update(entry.getId(), entry);
7270
}
7371
} catch (final Exception e) {
7472
txn.rollback();

usage/src/main/java/com/cloud/usage/UsageManagerImpl.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1544,7 +1544,7 @@ private void createVolumeHelperEvent(UsageEventVO event) {
15441544
//For volumes which are 'attached' successfully, set the 'deleted' column in the usage_storage table,
15451545
//so that the secondary storage should stop accounting and only primary will be accounted.
15461546
SearchCriteria<UsageStorageVO> sc = _usageStorageDao.createSearchCriteria();
1547-
sc.addAnd("id", SearchCriteria.Op.EQ, volId);
1547+
sc.addAnd("entityId", SearchCriteria.Op.EQ, volId);
15481548
sc.addAnd("storageType", SearchCriteria.Op.EQ, StorageTypes.VOLUME);
15491549
List<UsageStorageVO> volumesVOs = _usageStorageDao.search(sc, null);
15501550
if (volumesVOs != null) {
@@ -1599,7 +1599,8 @@ private void createVolumeHelperEvent(UsageEventVO event) {
15991599
//For Upload event add an entry to the usage_storage table.
16001600
SearchCriteria<UsageStorageVO> sc = _usageStorageDao.createSearchCriteria();
16011601
sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId());
1602-
sc.addAnd("id", SearchCriteria.Op.EQ, volId);
1602+
sc.addAnd("entityId", SearchCriteria.Op.EQ, volId);
1603+
sc.addAnd("storageType", SearchCriteria.Op.EQ, StorageTypes.VOLUME);
16031604
sc.addAnd("deleted", SearchCriteria.Op.NULL);
16041605
List<UsageStorageVO> volumesVOs = _usageStorageDao.search(sc, null);
16051606

@@ -1777,7 +1778,7 @@ private void createLoadBalancerHelperEvent(UsageEventVO event) {
17771778
} else if (EventTypes.EVENT_LOAD_BALANCER_DELETE.equals(event.getType())) {
17781779
SearchCriteria<UsageLoadBalancerPolicyVO> sc = _usageLoadBalancerPolicyDao.createSearchCriteria();
17791780
sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId());
1780-
sc.addAnd("id", SearchCriteria.Op.EQ, id);
1781+
sc.addAnd("lbId", SearchCriteria.Op.EQ, id);
17811782
sc.addAnd("deleted", SearchCriteria.Op.NULL);
17821783
List<UsageLoadBalancerPolicyVO> lbVOs = _usageLoadBalancerPolicyDao.search(sc, null);
17831784
if (lbVOs.size() > 1) {
@@ -1811,7 +1812,7 @@ private void createPortForwardingHelperEvent(UsageEventVO event) {
18111812
} else if (EventTypes.EVENT_NET_RULE_DELETE.equals(event.getType())) {
18121813
SearchCriteria<UsagePortForwardingRuleVO> sc = _usagePortForwardingRuleDao.createSearchCriteria();
18131814
sc.addAnd("accountId", SearchCriteria.Op.EQ, event.getAccountId());
1814-
sc.addAnd("id", SearchCriteria.Op.EQ, id);
1815+
sc.addAnd("pfId", SearchCriteria.Op.EQ, id);
18151816
sc.addAnd("deleted", SearchCriteria.Op.NULL);
18161817
List<UsagePortForwardingRuleVO> pfVOs = _usagePortForwardingRuleDao.search(sc, null);
18171818
if (pfVOs.size() > 1) {
@@ -2112,7 +2113,7 @@ private void createVmSnapshotOnPrimaryEvent(UsageEventVO event) {
21122113
} else if (EventTypes.EVENT_VM_SNAPSHOT_OFF_PRIMARY.equals(event.getType())) {
21132114
QueryBuilder<UsageSnapshotOnPrimaryVO> sc = QueryBuilder.create(UsageSnapshotOnPrimaryVO.class);
21142115
sc.and(sc.entity().getAccountId(), SearchCriteria.Op.EQ, event.getAccountId());
2115-
sc.and(sc.entity().getId(), SearchCriteria.Op.EQ, vmId);
2116+
sc.and(sc.entity().getVmId(), SearchCriteria.Op.EQ, vmId);
21162117
sc.and(sc.entity().getName(), SearchCriteria.Op.EQ, name);
21172118
sc.and(sc.entity().getDeleted(), SearchCriteria.Op.NULL);
21182119
List<UsageSnapshotOnPrimaryVO> vmsnaps = sc.list();
@@ -2155,6 +2156,9 @@ private void handleNetworkEvent(UsageEventVO event) {
21552156
if (EventTypes.EVENT_NETWORK_DELETE.equals(event.getType())) {
21562157
usageNetworksDao.remove(event.getResourceId(), event.getCreateDate());
21572158
} else if (EventTypes.EVENT_NETWORK_CREATE.equals(event.getType())) {
2159+
logger.debug("Marking existing helper entries for network [{}] as removed.", event.getResourceId());
2160+
usageNetworksDao.remove(event.getResourceId(), event.getCreateDate());
2161+
logger.debug("Creating a helper entry for network [{}].", event.getResourceId());
21582162
UsageNetworksVO usageNetworksVO = new UsageNetworksVO(event.getResourceId(), event.getOfferingId(), event.getZoneId(), event.getAccountId(), domainId, Network.State.Allocated.name(), event.getCreateDate(), null);
21592163
usageNetworksDao.persist(usageNetworksVO);
21602164
} else if (EventTypes.EVENT_NETWORK_UPDATE.equals(event.getType())) {
@@ -2170,10 +2174,13 @@ private void handleVpcEvent(UsageEventVO event) {
21702174
if (EventTypes.EVENT_VPC_DELETE.equals(event.getType())) {
21712175
usageVpcDao.remove(event.getResourceId(), event.getCreateDate());
21722176
} else if (EventTypes.EVENT_VPC_CREATE.equals(event.getType())) {
2177+
logger.debug("Marking existing helper entries for VPC [{}] as removed.", event.getResourceId());
2178+
usageVpcDao.remove(event.getResourceId(), event.getCreateDate());
2179+
logger.debug("Creating a helper entry for VPC [{}].", event.getResourceId());
21732180
UsageVpcVO usageVPCVO = new UsageVpcVO(event.getResourceId(), event.getZoneId(), event.getAccountId(), domainId, Vpc.State.Enabled.name(), event.getCreateDate(), null);
21742181
usageVpcDao.persist(usageVPCVO);
21752182
} else {
2176-
logger.error(String.format("Unknown event type [%s] in VPC event parser. Skipping it.", event.getType()));
2183+
logger.error("Unknown event type [{}] in VPC event parser. Skipping it.", event.getType());
21772184
}
21782185
}
21792186

0 commit comments

Comments
 (0)