|
In a setup with more compute nodes than CPU cores for the ODL, there is a problem in the way VpnOpDataSyncer class in used with DataStoreJobCoordinator jobs.
In such setup, when creating an external network, it immediately creates a VPN interface on each compute. All those interfaces are running as DjC jobs.
Those jobs, are using VpnOpDataSyncer:waitForVpnDataReady() method to wait for VPN-Instance data to be ready.
VPN-Instance data is handled in AddVpnInstanceWorker which is also a DjC job.
An issue rises because the VPN-interfaces jobs are running on all the threads available in the fork-join pool, and there are no available threads to run AddVpnInstanceWorker job.
This causes some of the VPN-Interface jobs to give up after 90 seconds, with the following print to the log:
2016-12-21 11:37:04,298 | INFO | Pool-1-worker-52 | VpnOpDataSyncer | 360 - org.opendaylight.netvirt.vpnmanager-impl - 0.3.2.SNAPSHOT | Vpn 1a32e5f0-f2a2-4636-a907-13c741e336ca OpData not ready after 90000ms
|