standalone
Команды standalone поднимают и останавливают автономный сервер ibsrv на машине раннера для базы, объявленной сервером под управлением раннера. К чужому ibsrv раннер только подключается и не трогает его процесс.
standalone start
v8-runner standalone start
Поднимает ibsrv той же платформы, что выбирают остальные команды (tools.platform), над файловой базой из standalone.managed.db-path или над базой из секции dbms; база должна быть создана заранее. При dbms.managed команда первым шагом поднимает PostgreSQL, если он не работает. Пароль СУБД ibsrv получает ключом -W через stdin, в командной строке его нет. На Linux и macOS команда отказывает. Раннер сам выбирает свободные порты прямого шлюза, SSH-шлюза и HTTP, создаёт одноразовый ключ хоста для SSH-шлюза и отдаёт ответ только после того, как прямой шлюз принял соединение: готовность проверяется пробой, а не паузой (61, 65). Сервер живёт между командами, пока его не остановит standalone stop. Запись о том, какой процесс поднят, какими портами и с каким ключом, раннер держит под localPath.
Если сервер этой базы уже поднят раннером этой копии, команда ничего не запускает и называет его. Если базу держит чужой процесс ibsrv, команда отказывает и называет его: второй сервер над той же базой не поднимается.
Если закреплённый порт занял другой процесс, команда берёт новый свободный блок портов и закрепляет его; чужой процесс остаётся работать. Ответ называет новые адреса, прямой порт прежнего блока и предупреждает, кто занял порт. Ключ хоста SSH-шлюза и его отпечаток не меняются. v8project*.yaml раннер не правит: адрес сервера берите из ответа standalone start или standalone status и не кешируйте. Если перечня процессов нет и не сказать, кто держит порт, команда отказывает.
v8-runner standalone start --dry-run
Показывает каталог данных, журнал и закреплённые адреса, если сервер уже запускался. Ничего не запускает. Такое же превью есть у standalone stop и standalone restart. Команды standalone принимают только объявленную базу: строка соединения в --infobase — отказ.
standalone status
v8-runner standalone status
Отвечает, поднят ли сервер этой базы и кем: не поднят, поднят раннером этой копии или поднят не раннером. Для своего сервера называет PID, адреса прямого шлюза, SSH-шлюза и HTTP и отвечает ли прямой шлюз. Чужой сервер только называет: чей он, раннер не знает. Платформу команда не запускает, замок рабочей копии ей не нужен, ключа --dry-run у неё нет.
standalone stop
v8-runner standalone stop
Останавливает сервер, который поднял раннер этой копии, и ждёт завершения его процесса. PostgreSQL, поднятый шагом standalone start, гасит следом, а поднятый dbms start не трогает (таблица владения). Сервер, поднятый не раннером, не останавливает: ответ называет его и говорит, что он не наш. Если сервера нет и гасить нечего, команда успешна.
standalone restart
v8-runner standalone restart
То же, что standalone stop и затем standalone start, для своего сервера. Чужой сервер не перезапускает, PostgreSQL не трогает.
Классы ответов
| Класс | Когда возникает и что означает |
|---|---|
| Сервер поднят | standalone start поднял ibsrv, проба прямого шлюза прошла. Пример |
| Уже поднят этой копией | Свой сервер работает: новый не запускается. Пример |
| Состояние | standalone status различает: не поднят, поднят раннером, поднят не раннером. Пример |
| Сервер остановлен | standalone stop завершил свой процесс. Пример |
| Порт занят — новый блок | Закреплённый порт держит другой процесс: сервер поднят на новых портах, в ответе previous_port, в предупреждении — кто занял порт. Пример |
| Чужой сервер не тронут | Базу держит ibsrv, поднятый не раннером: standalone start отказывает, standalone stop его не останавливает. Пример |
| Сервер не стал готов | Процесс завершился или проба не прошла за отведённое время: platform_failure, выход CLI 4, в ответе — журнал ibsrv. Пример |
Причины отказов и различия между ошибкой команды, ошибкой шага и диагностикой запуска — в словаре ответов.
Варианты ответа
Сервер поднят
standalone start: started ibsrv, pid 48213
direct gate Srvr=127.0.0.1:24641;Ref=demo
ssh gate 127.0.0.1:24642
http http://127.0.0.1:24643/demo
data .local/infobases/origin/managed/standalone/data
log .local/infobases/origin/managed/standalone/standalone.log
Порт занят — новый блок
standalone start: started ibsrv, pid 48213
direct gate Srvr=127.0.0.1:31233;Ref=demo
ssh gate 127.0.0.1:31234
http http://127.0.0.1:31235/demo
data .local/infobases/origin/managed/standalone/data
log .local/infobases/origin/managed/standalone/standalone.log
previous port 24641
warning: port 24641 of the server of 'origin' is taken by process 9008, which this runner did not start; it is left running: the server moved from port 24641 to port 31233, the gate key and its fingerprint stay; take the address from this answer, v8project*.yaml is not changed
Уже поднят этой копией
standalone start: already running for origin, pid 48213
direct gate Srvr=127.0.0.1:24641;Ref=demo
ssh gate 127.0.0.1:24642
http http://127.0.0.1:24643/demo
data .local/infobases/origin/managed/standalone/data
log .local/infobases/origin/managed/standalone/standalone.log
Состояние своего сервера
standalone status: origin: standalone server, started by this working copy, pid 48213
direct gate Srvr=127.0.0.1:24641;Ref=demo
ssh gate 127.0.0.1:24642
http http://127.0.0.1:24643/demo
data .local/infobases/origin/managed/standalone/data
log .local/infobases/origin/managed/standalone/standalone.log
Сервер остановлен
standalone stop: ibsrv pid 48213 stopped
Чужой сервер не тронут
ERROR: workspace busy: the infobase of 'origin' is served by ibsrv pid 30117, which this runner did not start; it is left running
Сервер не стал готов
ERROR: platform error: ibsrv exited before its direct gate accepted a connection; log: .local/infobases/origin/managed/standalone/standalone.log