CLOUDSTACK-9708: Router deployment failed due to two threads start VR simultaneously.

(cherry picked from commit 9e20525e08)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
Nitin Kumar Maharana 2017-03-08 13:22:30 +05:30 committed by Rohit Yadav
parent 9ce2dde030
commit 42e60ebac6
1 changed files with 13 additions and 15 deletions

View File

@ -192,6 +192,18 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
JoinBuilder.JoinType.INNER);
AccountDataCenterVirtualSearch.done();
SearchBuilder<NicVO> nicSearchByNetwork = _nicDao.createSearchBuilder();
nicSearchByNetwork.and("networkId", nicSearchByNetwork.entity().getNetworkId(), SearchCriteria.Op.EQ);
nicSearchByNetwork.and("removed", nicSearchByNetwork.entity().getRemoved(), SearchCriteria.Op.NULL);
nicSearchByNetwork.and().op("ip4Address", nicSearchByNetwork.entity().getIPv4Address(), SearchCriteria.Op.NNULL);
nicSearchByNetwork.or("ip6Address", nicSearchByNetwork.entity().getIPv6Address(), SearchCriteria.Op.NNULL);
nicSearchByNetwork.cp();
UserVmSearch = createSearchBuilder();
UserVmSearch.and("states", UserVmSearch.entity().getState(), SearchCriteria.Op.IN);
UserVmSearch.join("nicSearchByNetwork", nicSearchByNetwork, UserVmSearch.entity().getId(), nicSearchByNetwork.entity().getInstanceId(), JoinBuilder.JoinType.INNER);
UserVmSearch.done();
UserVmByIsoSearch = createSearchBuilder();
UserVmByIsoSearch.and("isoId", UserVmByIsoSearch.entity().getIsoId(), SearchCriteria.Op.EQ);
UserVmByIsoSearch.done();
@ -301,25 +313,11 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
@Override
public List<UserVmVO> listByNetworkIdAndStates(long networkId, State... states) {
if (UserVmSearch == null) {
SearchBuilder<NicVO> nicSearch = _nicDao.createSearchBuilder();
nicSearch.and("networkId", nicSearch.entity().getNetworkId(), SearchCriteria.Op.EQ);
nicSearch.and("removed", nicSearch.entity().getRemoved(), SearchCriteria.Op.NULL);
nicSearch.and().op("ip4Address", nicSearch.entity().getIPv4Address(), SearchCriteria.Op.NNULL);
nicSearch.or("ip6Address", nicSearch.entity().getIPv6Address(), SearchCriteria.Op.NNULL);
nicSearch.cp();
UserVmSearch = createSearchBuilder();
UserVmSearch.and("states", UserVmSearch.entity().getState(), SearchCriteria.Op.IN);
UserVmSearch.join("nicSearch", nicSearch, UserVmSearch.entity().getId(), nicSearch.entity().getInstanceId(), JoinBuilder.JoinType.INNER);
UserVmSearch.done();
}
SearchCriteria<UserVmVO> sc = UserVmSearch.create();
if (states != null && states.length != 0) {
sc.setParameters("states", (Object[])states);
}
sc.setJoinParameters("nicSearch", "networkId", networkId);
sc.setJoinParameters("nicSearchByNetwork", "networkId", networkId);
return listBy(sc);
}