@Override public void afterHostConnected(HostInventory inv) { if (inv.getStatus().equals(HostStatus.Connected.toString())){ List<String> vmUuids = Q.New(VmInstanceVO.class).select(VmInstanceVO_.uuid) .eq(VmInstanceVO_.hostUuid, inv.getUuid()) .listValues(); if(vmUuids.isEmpty()){ return; } new While<>(vmUuids).step((vmUuid, completion) -> { VmCheckOwnStateMsg msg = new VmCheckOwnStateMsg(); msg.setVmInstanceUuid(vmUuid); bus.makeTargetServiceIdByResourceUuid(msg, VmInstanceConstant.SERVICE_ID, vmUuid); bus.send(msg, new CloudBusCallBack(completion) { @Override public void run(MessageReply reply) { if(!reply.isSuccess()){ logger.warn(String.format("the host[uuid:%s] connected, but the vm[uuid:%s] fails to " + "update it's state , %s", inv.getUuid(), vmUuid, reply.getError())); } completion.done(); } }); }, 200).run(new NopeNoErrorCompletion()); } } }