Pular para o conteúdo principal

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​

  1. 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.
  2. O painel de log de operações, botão LOG: mostra o progresso da operação repassada aos agentes dos nós.
  3. Histórico de estados da máquina: o método vm-history o 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.
  4. 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​