Koushik Das created CLOUDSTACK-9180:
---------------------------------------

             Summary: Optimize concurrent VM deployment operation on same 
network
                 Key: CLOUDSTACK-9180
                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9180
             Project: CloudStack
          Issue Type: Bug
      Security Level: Public (Anyone can view this level - this is the default.)
          Components: Management Server
    Affects Versions: 4.6.0
            Reporter: Koushik Das
            Assignee: Koushik Das
             Fix For: 4.7.0


During VM deployment a check is performed to see if VR exists or not. If not it 
is created - first an entry is allocated in DB for VR and then it is deployed. 
The allocation logic is placed in a lock (based on network id) so that only one 
thread does the allocation. But the locking is implemented in a way such that 
all threads wait on that lock even when VR is already allocated. The correct 
approach would be to check if VR is allocated or not and acquire lock only when 
needed.

This issue is more frequently seen when concurrently deploying VMs in basic 
zone as all threads try to acquire lock using the same network id. In advanced 
zone operations are spread across multiple networks and so less frequent.

Refer to findOrDeployVirtualRouter() in RouterDeploymentDefinition.java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to