Uma operação assíncrona continua em andamento
Sintoma
Uma operação de longa duração (como migração ou criação de volume) continua em andamento por mais tempo do que o esperado.
Causa
As ações de longa duração são assíncronas: o cliente inicia a operação e depois consulta periodicamente o seu status. Um aparente travamento geralmente significa que a operação ainda está de fato em execução no nó ou aguardando a liberação de recursos.
Para algumas operações, um longo período sem resposta é normal. A migração de VM para outro pool responde uma única vez, após o ciclo inteiro: cópia por um stream ZFS, depois novo registro de discos, snapshots e da máquina e, por fim, exclusão do dataset de origem. O cluster não informa o progresso da cópia, portanto a ausência de atualizações não indica o estado da operação.
Como verificar
- Estado do objeto. Verifique a coluna State na lista de VMs e o campo de estado no cartão. Enquanto a operação está em execução, a máquina fica bloqueada e outros comandos direcionados a ela são rejeitados.
- O painel de log de operações, botão LOG: mostra o progresso da operação repassada aos agentes dos nós.
- Histórico de estados da máquina: o método
vm-historyo retorna, mostrando quando o objeto entrou no estado atual e, portanto, se a operação está em execução há um minuto ou há uma hora. - Status do nó:
Provider Data Center→Server Nodes. Um comando enviado a um nó que não está ONLINE não receberá resposta.
Resolução
Verifique o status atual da operação e a carga no nó afetado; se a operação não estiver progredindo e houver recursos disponíveis, escale o caso com os dados de monitoramento.
Repetir uma requisição com o mesmo ID é desnecessário e contraproducente: desde a 3.0.5, o dispatcher
reconhece a reentrega pelo broker e não executa o trabalho uma segunda vez.
Uma chamada síncrona recebe -1000, "esta requisição já existe"; uma chamada assíncrona não recebe
resposta à repetição. A resposta salva da primeira tentativa não é retornada novamente;
o resultado chega para a requisição original. Uma nova tentativa correta usa um novo
ID de requisição.
A migração tem um caso à parte: o código -25310 significa que o ciclo não terminou e
falhou durante o novo registro. Isso já é uma falha, e não um travamento. Não inicie uma nova migração antes de
determinar a causa; verifique o estado da máquina e de seus discos no cartão.
Métodos da API
As operações da API abordadas nesta página são vm-statuses, vm-history, vm-get, node-list
e task. Consulte a referência da API.
Veja também
- Visão geral da API—como as chamadas síncronas e assíncronas diferem e como funciona a regra de unicidade do ID de requisição.
- Migração de VM: troca de nó e de pool—por que a migração não tem atualizações de progresso e como ela termina.
- Ciclo de vida da máquina virtual—quais estados são transitórios e o que é proibido neles.