cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] rhtyd commented on a change in pull request #1762: CLOUDSTACK-9595 Transactions are not getting retried in case of datab?
Date Thu, 01 Jan 1970 00:00:00 GMT
rhtyd commented on a change in pull request #1762: CLOUDSTACK-9595 Transactions are not getting
retried in case of datab?
URL: https://github.com/apache/cloudstack/pull/1762#discussion_r157830379
 
 

 ##########
 File path: server/src/com/cloud/network/IpAddressManagerImpl.java
 ##########
 @@ -836,35 +835,51 @@ public IPAddressVO doInTransaction(TransactionStatus status) throws
Insufficient
     @DB
     @Override
     public void markPublicIpAsAllocated(final IPAddressVO addr) {
-
-        Transaction.execute(new TransactionCallbackNoReturn() {
-            @Override
-            public void doInTransactionWithoutResult(TransactionStatus status) {
-                Account owner = _accountMgr.getAccount(addr.getAllocatedToAccountId());
-                synchronized (this) {
+        synchronized (_allocatedLock) {
+            Transaction.execute(new TransactionCallbackNoReturn() {
+                @Override
+                public void doInTransactionWithoutResult(TransactionStatus status) {
+                    Account owner = _accountMgr.getAccount(addr.getAllocatedToAccountId());
                     if (_ipAddressDao.lockRow(addr.getId(), true) != null) {
                         IPAddressVO userIp = _ipAddressDao.findById(addr.getId());
                         if (userIp.getState() == IpAddress.State.Allocating || addr.getState()
== IpAddress.State.Free) {
                             addr.setState(IpAddress.State.Allocated);
-                            _ipAddressDao.update(addr.getId(), addr);
-                            // Save usage event
-                            if (owner.getAccountId() != Account.ACCOUNT_ID_SYSTEM) {
-                                VlanVO vlan = _vlanDao.findById(addr.getVlanId());
-                                String guestType = vlan.getVlanType().toString();
-                                if (!isIpDedicated(addr)) {
-                                    UsageEventUtils.publishUsageEvent(EventTypes.EVENT_NET_IP_ASSIGN,
owner.getId(), addr.getDataCenterId(), addr.getId(),
-                                            addr.getAddress().toString(),
-                                            addr.isSourceNat(), guestType, addr.getSystem(),
addr.getClass().getName(), addr.getUuid());
-                                }
-                                if (updateIpResourceCount(addr)) {
-                                    _resourceLimitMgr.incrementResourceCount(owner.getId(),
ResourceType.public_ip);
+                            if (_ipAddressDao.update(addr.getId(), addr)) {
 
 Review comment:
   @yvsubhash I've found regressions in some tests, specifically around private gw tests where
failures look like this:
   ```
   2017-12-19 22:53:00,817 DEBUG [c.c.a.t.Request] (AgentManager-Handler-20:null) (logid:)
Seq 1-4815473901565903002: Processing:  { Ans: , MgmtId: 2485222984626, via: 1, Ver: v1, Flags:
10, [{"com.cloud.agent.api.routing.GroupAnswer":{"results":["null - success: Creating file
in VR, with ip: 169.254.1.135, file: ip_associations.json.82a129d8-a849-4a63-af8b-3b885abd3b32","null
- failed: [INFO] update_config.py :: Processing incoming file => ip_associations.json.82a129d8-a849-4a63-af8b-3b885abd3b32[INFO]
Processing JSON file ip_associations.json.82a129d8-a849-4a63-af8b-3b885abd3b32Traceback (most
recent call last):  File \"/opt/cloud/bin/update_config.py\", line 143, in <module>
   process_file()  File \"/opt/cloud/bin/update_config.py\", line 57, in process_file    finish_config()
 File \"/opt/cloud/bin/update_config.py\", line 45, in finish_config    returncode = configure.main(sys.argv)
 File \"/opt/cloud/bin/configure.py\", line 1006, in main    config.address().process()  File
\"/opt/cloud/bin/cs/CsAddress.py\", line 104, in process    ip = CsIP(dev, self.config)  File
\"/opt/cloud/bin/cs/CsAddress.py\", line 261, in __init__    self.dnum = hex(int(dev[3:]))ValueError:
invalid literal for int() with base 10: 'None'"],"result":false,"wait":0}}] }      2017-12-19
22:53:00,818 DEBUG [c.c.a.t.Request] (API-Job-Executor-47:ctx-52e4a845 job-76 ctx-b4b917c1)
(logid:a5289d87) Seq 1-4815473901565903002: Received:  { Ans: , MgmtId: 2485222984626, via:
1(centos7-kvm1), Ver: v1, Flags: 10, { GroupAnswer } }
   ```
   On deeper analysis, I found that `nic_dev_id` was not passed to a VPC router with no VMs,
one network and a private way via a ip_associations.json and it caused interface to have ethNone
defined in ips.json instead of eth2 etc. (this is similar to https://issues.apache.org/jira/browse/CLOUDSTACK-9759).
Since, the only change in master is your PR I suspect there is some regression and that patch
you've submitted here may be different that you private fork/branch. /cc @rafaelweingartner

   
   For example, in this code if update fails for some reason it should throw an exception
or log?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

Mime
View raw message