When there is out-of-band movement of VRs (due to native HA in a VMWare cluster), they need to be rebooted for reconfiguring all the network rules. Currently all these VR reboot happens using the thread pool used for collecting VR statistics.
_executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("RouterMonitor"));
Also as can be seen, the size of the pool is 1. So if there are multiple VRs getting moved out-of-band, the reboot for each will be queued up.
The idea is to use a separate thread pool for handling VR reboot.