FAQ по YTsaurus Flow

Q: Можно ли обновить бинарные файлы пайплайна без остановки/паузы?

A: Короткий ответ — нет. Есть очень много нюансов совместимости старого и нового бинарника на уровне пользовательского кода, команда Flow не готова брать на себя ответственность, говоря, что так можно делать.

При выкатке нового бинарника с остановкой, но без дрейна:

  • Могут остаться промежуточные сообщения на YTsaurus от старого бинарника, новый бинарник может быть к этому не готов (например, если поменялся какой-то инвариант).
  • Могут случиться дубликаты и/или потери событий, если меняется логика генерации выходных сообщений в Swift компьютейшенах.
  • В дифф между двумя бинарниками могут попасть коммиты из самого Flow. Эти изменения могут быть небезопасными для выкатки без дрейна.

Когда всё-таки можно обновлять бинарные файлы без дрейна:

  • В дев-окружении, которое вы не боитесь полностью сломать. И в случае поломки которого (или обнаружения странностей) просто его перенальёте с нуля.

Команда Flow оставляет за собой право не помогать решать любые проблемы с пайплайном, в истории которого были такие небезопасные операции.

Q: Мой пайплайн в состоянии Completed, как так получилось?

A: Самая частая ситуация — запуск нового пайплайна до установки спеки. Более редкая ситуация — пайплайн может быть запущен со всеми финитными (finite=true в спеке) сорсами как в тестах и сорсы были обработаны.

В обоих случаях вывести пайплайн из Completed состояния возможно только через его полное пересоздание. То есть нужно остановить контроллеры и воркеры, удалить объект пайплайна на YTsaurus и заново всё создать и запустить.

Q: Как запустить Flow в IPv4-only окружении?

A: По умолчанию Flow использует IPv6 для межнодовой коммуникации (Controller ↔ Worker, Worker ↔ Worker). Для работы в IPv4-only окружении необходимо настроить секцию address_resolver:

{
    cluster_url = "your-cluster";
    path = "//home/your-pipeline";

    address_resolver = {
        enable_ipv4 = %true;
        enable_ipv6 = %false;
    };

    # ... остальные параметры конфига
}

Важно

Должен быть включён ровно один протокол: либо enable_ipv4 = %true, либо enable_ipv6 = %true. Включение обоих или выключение обоих приведёт к ошибке при старте ноды.

Важные особенности

Настройка address_resolver является глобальным синглтоном и влияет на все DNS-резолвы в процессе, включая:

  • Резолв адресов других нод Flow (Controller, Worker).
  • Резолв адресов RPC-прокси YTsaurus.
  • Любые другие DNS-запросы внутри процесса.

Это означает, что при enable_ipv6 = %false DNS-резолвер будет запрашивать только A-записи (IPv4). Убедитесь, что все хосты, с которыми взаимодействует пайплайн (включая RPC-прокси YTsaurus), имеют A-записи в DNS.