Chandan Purushothama created CLOUDSTACK-252:
-----------------------------------------------

             Summary: UpdateNetwork Operation on a guest network that is 
currently using Virtual Router for Lb services to a network offering that uses 
"F5" for Lb services Fails due to MySQLIntegrityConstraintViolationException.
                 Key: CLOUDSTACK-252
                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-252
             Project: CloudStack
          Issue Type: Bug
          Components: Management Server
    Affects Versions: 4.1.0
            Reporter: Chandan Purushothama
             Fix For: 4.1.0


===============
Steps to Reproduce:
===============

1. On an Advanced Zone with two physical networks, create a guest network from 
a network offering with services as mentioned below

mysql> select * from network_offerings where id=13 \G
*************************** 1. row ***************************
                       id: 13
                     name: Network-SNAT-guest1
                     uuid: 277b7b7a-8aeb-46f8-94e9-e83de34912a8
              unique_name: Network-SNAT-guest1
             display_text: Network-SNAT-guest1
                  nw_rate: 500
                  mc_rate: 10
             traffic_type: Guest
                     tags: guest1
              system_only: 0
             specify_vlan: 0
      service_offering_id: NULL
            conserve_mode: 0
                  created: 2012-09-26 18:43:35
                  removed: NULL
                  default: 0
             availability: Optional
     dedicated_lb_service: 1
shared_source_nat_service: 0
                 sort_key: 0
 redundant_router_service: 0
                    state: Enabled
               guest_type: Isolated
       elastic_ip_service: 0
       elastic_lb_service: 0
        specify_ip_ranges: 0
1 row in set (0.00 sec)

mysql> select * from ntwk_offering_service_map where network_offering_id=13;
+----+---------------------+----------------+---------------+---------------------+
| id | network_offering_id | service        | provider      | created           
  |
+----+---------------------+----------------+---------------+---------------------+
| 48 |                  13 | Dhcp           | VirtualRouter | 2012-09-26 
18:43:35 |
| 51 |                  13 | Dns            | VirtualRouter | 2012-09-26 
18:43:35 |
| 52 |                  13 | Firewall       | VirtualRouter | 2012-09-26 
18:43:35 |
| 49 |                  13 | Lb             | VirtualRouter | 2012-09-26 
18:43:35 |
| 50 |                  13 | PortForwarding | VirtualRouter | 2012-09-26 
18:43:35 |
| 53 |                  13 | SourceNat      | VirtualRouter | 2012-09-26 
18:43:35 |
| 46 |                  13 | StaticNat      | VirtualRouter | 2012-09-26 
18:43:35 |
| 54 |                  13 | UserData       | VirtualRouter | 2012-09-26 
18:43:35 |
| 47 |                  13 | Vpn            | VirtualRouter | 2012-09-26 
18:43:35 |
+----+---------------------+----------------+---------------+---------------------+
9 rows in set (0.00 sec)

mysql>

2, Deploy three VMs on a guest network that is created from the above mentioned 
network offering.
3. Create a Load balancing rule servicing the VMs on the guest network.
4. Stop All the VMs and UpdateNetwork to the Network offering with services as 
mentioned below. Notice that the LB Service is provided by F5 in the new 
network offering.

mysql> select * from network_offerings where id=18 \G
*************************** 1. row ***************************
                       id: 18
                     name: Network-F5-guest1
                     uuid: 5c7746b8-e29f-4a74-8369-e88647081053
              unique_name: Network-F5-guest1
             display_text: Network-F5-guest1
                  nw_rate: 535
                  mc_rate: 10
             traffic_type: Guest
                     tags: guest1
              system_only: 0
             specify_vlan: 0
      service_offering_id: NULL
            conserve_mode: 0
                  created: 2012-09-27 01:13:38
                  removed: NULL
                  default: 0
             availability: Optional
     dedicated_lb_service: 0
shared_source_nat_service: 0
                 sort_key: 0
 redundant_router_service: 0
                    state: Enabled
               guest_type: Isolated
       elastic_ip_service: 0
       elastic_lb_service: 0
        specify_ip_ranges: 0
1 row in set (0.00 sec)

mysql> select * from ntwk_offering_service_map where network_offering_id=18;
+----+---------------------+----------------+---------------+---------------------+
| id | network_offering_id | service        | provider      | created           
  |
+----+---------------------+----------------+---------------+---------------------+
| 81 |                  18 | Dhcp           | VirtualRouter | 2012-09-27 
01:13:38 |
| 86 |                  18 | Dns            | VirtualRouter | 2012-09-27 
01:13:38 |
| 83 |                  18 | Firewall       | VirtualRouter | 2012-09-27 
01:13:38 |
| 85 |                  18 | Lb             | F5BigIp       | 2012-09-27 
01:13:38 |
| 80 |                  18 | PortForwarding | VirtualRouter | 2012-09-27 
01:13:38 |
| 84 |                  18 | SourceNat      | VirtualRouter | 2012-09-27 
01:13:38 |
| 82 |                  18 | StaticNat      | VirtualRouter | 2012-09-27 
01:13:38 |
| 79 |                  18 | UserData       | VirtualRouter | 2012-09-27 
01:13:38 |
| 87 |                  18 | Vpn            | VirtualRouter | 2012-09-27 
01:13:38 |
+----+---------------------+----------------+---------------+---------------------+
9 rows in set (0.00 sec)

5. Observe the Exception mentioned below.

===========
Observations:
===========

==================================
MySQLIntegrityConstraintViolationException:
==================================

2012-10-03 17:36:57,449 DEBUG [db.Transaction.Transaction] 
(ExternalNetworkMonitor-1:null) Rolling back the transaction: Time = 4 Name =  
-ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.manageStatsEntries:537-ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.runExternalLoadBalancerNetworkUsageTask:403-ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.run:323-Executors$RunnableAdapter.call:471-FutureTask$Sync.innerRunAndReset:351-FutureTask.runAndReset:178-ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201:165-ScheduledThreadPoolExecutor$ScheduledFutureTask.run:267-ThreadPoolExecutor.runWorker:1110-ThreadPoolExecutor$Worker.run:603-Thread.run:679;
 called by 
-Transaction.rollback:887-Transaction.removeUpTo:830-Transaction.close:649-DatabaseCallback.interceptComplete:71-DatabaseCallback.intercept:36-ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.createStatsEntry:442-ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.createOrUpdateStatsEntry:523-ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.manageStatsEntries:547-ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.runExternalLoadBalancerNetworkUsageTask:403-ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.run:323-Executors$RunnableAdapter.call:471-FutureTask$Sync.innerRunAndReset:351
2012-10-03 17:36:57,451 WARN  
[cloud.network.ExternalLoadBalancerUsageManagerImpl] 
(ExternalNetworkMonitor-1:null) Exception:
javax.persistence.EntityExistsException: Entity already exists:
        at com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1309)
        at 
com.cloud.utils.db.DatabaseCallback.intercept(DatabaseCallback.java:34)
        at 
com.cloud.network.ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.createStatsEntry(ExternalLoadBalancerUsageManagerImpl.java:442)
        at 
com.cloud.network.ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.createOrUpdateStatsEntry(ExternalLoadBalancerUsageManagerImpl.java:523)
        at 
com.cloud.network.ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.manageStatsEntries(ExternalLoadBalancerUsageManagerImpl.java:547)
        at 
com.cloud.network.ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.runExternalLoadBalancerNetworkUsageTask(ExternalLoadBalancerUsageManagerImpl.java:403)
        at 
com.cloud.network.ExternalLoadBalancerUsageManagerImpl$ExternalLoadBalancerDeviceNetworkUsageTask.run(ExternalLoadBalancerUsageManagerImpl.java:323)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at 
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:679)
Caused by: 
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 
Duplicate entry '3-1-10.223.139.12-6-ExternalLoadBalancer' for key 'account_id'
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        at com.mysql.jdbc.Util.getInstance(Util.java:386)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2151)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2625)
        at 
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2119)
        at 
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2415)
        at 
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2333)
        at 
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2318)
        at 
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:106)
        at com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1274)
        ... 18 more
2012-10-03 17:36:57,455 DEBUG 
[cloud.network.ExternalLoadBalancerUsageManagerImpl] 
(ExternalNetworkMonitor-1:null) Network 205 is not configured for external 
networking, so skipping usage check.
2012-10-03 17:36:57,457 DEBUG 
[cloud.network.ExternalLoadBalancerUsageManagerImpl] 
(ExternalNetworkMonitor-1:null) Network 206 is not configured for external 
networking, so skipping usage check.
2012-10-03 17:36:57,468 DEBUG 
[cloud.network.ExternalLoadBalancerUsageManagerImpl] 
(ExternalNetworkMonitor-1:null) Successfully updated stats for account atoms, 
zone ZONE-ASF, network ID 209, host ID 200-F5BigIpLoadBalancer-10.223.60.3, 
public IP: 10.223.139.8

=======
Git Info:
=======

Git Revision: 61e1cf3c44863b5104364ccb27c43a45708f2b57
Git URL: https://git-wip-us.apache.org/repos/asf/incubator-cloudstack.git


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to