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.