Перейти к основному содержимому

Асинхронная операция долго висит

Симптом​

Длительная операция (например миграция или создание тома) остаётся в состоянии выполнения дольше ожидаемого.

Причина​

Длительные действия выполняются асинхронно: клиент запускает операцию и затем опрашивает её состояние. «Зависание» обычно означает, что операция реально ещё идёт на узле или ждёт освобождения ресурсов.

У некоторых операций долгое молчание штатно. Миграция ВМ в другой пул отвечает один раз, после всего цикла: копирование потоком ZFS, затем перерегистрация дисков, снимков и машины, затем удаление исходного датасета. Прогресс копирования кластер не отдаёт вовсе, поэтому по отсутствию новостей судить о состоянии нельзя.

Как проверить​

  1. Состояние объекта. Колонка State в списке ВМ и поле состояния в карточке. Пока операция идёт, машина заперта и другие команды над ней отбиваются.
  2. Панель журнала операций, кнопка LOG: там виден ход операции, переданной агентам узлов.
  3. История состояний машины: её отдаёт метод vm-history, и по ней видно, когда объект вошёл в текущее состояние, то есть идёт операция минуту или час.
  4. Состояние узлов: Provider Data Center → Server Nodes. Команда, отданная узлу не в состоянии ONLINE, ответа не принесёт.

Решение​

Проверьте текущее состояние операции и загрузку затронутого узла; если операция не двигается и ресурсы свободны, эскалируйте по данным мониторинга.

Повторять запрос с тем же идентификатором не нужно и вредно: с 3.0.5 диспетчер распознаёт повторную доставку брокером и работу второй раз не запускает. Синхронный вызов получает -1000 «такой запрос уже есть», асинхронный остаётся без ответа на повтор. Сохранённый ответ первой попытки повторно не отдаётся, результат приходит по исходному запросу. Правильный повтор это новый идентификатор запроса.

Отдельный случай у миграции: код -25310 означает, что цикл не завершился и упал на перерегистрации. Это не «висит», а уже отказ. Новую миграцию до выяснения запускать не нужно, состояние машины и её дисков читают с карточки.

Методы API​

Операции этой страницы в API: vm-statuses, vm-history, vm-get, node-list, task — см. Справочник API.

См. также​