v8-runner

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