powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Корректное завершение gbak/isql при b/r
25 сообщений из 173, страница 1 из 7
Корректное завершение gbak/isql при b/r
    #39868419
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Преамбула: я тут задался целью написать для себя кроссплатформенный велосипед с использованием всех утилит FB "в одном стакане", чтобы не мыкаться с командной строкой. В прикладе используется компонент TProcess (лазарусовская обвязка вокруг ShellExecute/System), который создается в доп.потоке, вызывает gbak/isql и т.д., ждет окончания их работы и благопристойно умирает вместе с потоком.

В ситуации, когда нужно срочно прервать b/r, мне необходимо сначала корректно завершить работу gbak/isql. Если просто уничтожить поток вместе с выполняющимся b/r, то утилиты, очевидно, лочат какое-то время выводимые файлы, потому что при повторной попытке запустить процесс я в течение 30-60 сек не могу удалить "неудачный" бекап и получаю отлуп:

Код: sql
1.
2.
gbak: ERROR:cannot open backup file d:\temp\test.fbk
gbak:Exiting before completion due to errors



Я читал про мониторинг, но DELETE FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION меня не устраивает, потому что бекап может делаться на работающей с юзерами базе. Можно, конечно, вычислить "виновника" по MON$REMOTE_PROCESS, но в этом случае грохнутся соседние экземпляры моего приложения, которые в этом время будут делать что-то еще. В идеале получить бы MON$ATTACHMENT_ID текущего коннекта, но как это сделать при использовании gbak?

Есть какие-нибудь соображения?
=================
Док.

Win7 Ultim x64/Deb 10 (MATE; gtk3) amd64:
FB 3.0.4.33054, Lazarus 2.1(r.61884); FPC 3.3.1 (r.43016), IBX by -Rik-
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868420
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

для gbak можно было сразу воспользоваться ServiceAPI и получить полный контроль за всем происходящим.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868426
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисможно было сразу воспользоваться ServiceAPI
можно подробнее для гуманитария, что ты имел ввиду? :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868427
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

MON$REMOTE_PID
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868429
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докможно подробнее для гуманитария, что ты имел ввиду? :)

в IBX лазаря нет IBBackupService?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868430
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисв IBX лазаря нет IBBackupService?
в данном случае я не использую его

hvladMON$REMOTE_PID
а как извлечь его из текущего соединения gbak? Есть какие-нибудь ключи? Или придется изучать низкоуровневой доступ к БД? :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868432
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,
когда ты запускал дочерний процесс, ты мог получить его PID.

Кстати
ДокМожно, конечно, вычислить "виновника" по MON$REMOTE_PROCESS, но в этом случае грохнутся соседние экземпляры моего приложения, которые в этом время будут делать что-то ещетвои приложения называются gbak.exe ? :)

PS PID - это process ID (на всякий)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868436
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladкогда ты запускал дочерний процесс, ты мог получить его PID.
ага, вот ты о чем! Я наивно полагал, что PID надо получать из таблиц мониторинга :)

Щас спрошу на лазаревском форуме, можно ли получить PID из TProcess.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868438
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladтвои приложения называются gbak.exe ? :)
:)
нет, конечно, но я сделал вывод по аналогии, глядя в таблицы MON$ATTACHMENTS двух запущенных экземпляров IBE
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868439
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисвоспользоваться ServiceAPI и получить полный контроль за всем происходящим.

Авотфиг. Там не то что "полного", там минимального контроля и то нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868440
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокСимонов Денисв IBX лазаря нет IBBackupService?
в данном случае я не использую его

А почему ты его не используешь? Потому, что ты хочешь получать бэкап-файл на локальной (не серверной) машине, или еще почему-то?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868445
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёА почему ты его не используешь? Потому, что ты хочешь получать бэкап-файл на локальной (не серверной) машине, или еще почему-то?
В том числе.

Я уже писал раньше, что на текущий момент, пилящиеся под Лазарь IBX от mwasoftware, либо не удовлетворяют потребностям последних версий FB (например, legacy-компоненты, оставшиеся в составе этой библы от первоисточника, не имеют пропертей обработки ключей -fix_fss_d/fix_fss_m), либо еще сырые и дают ошибки коннекта, если сервер(а) (например, в винде) установлен(ы) и запущен(ы) не стандартным инсталлятором, а из архивов и вручную.

Плюсуй сюда упертость автора, что продукт лучше развивать в соответствии с хотелками (в разумных пределах, конечно) пользователей, а не автора. Плюс независимость от нестандартных компонент доступа. В итоге получишь мои резоны :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868446
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докя сделал вывод по аналогии, глядя в таблицы MON$ATTACHMENTS двух запущенных экземпляров
IBEIBE не запускает gbak. Он использует Service API
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868453
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

Влад, спасибо за наводку. Пошел пилить дальше
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868460
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

А вот в linux расширения .exe не будет. :)
У TProcess есть свойство ProcessID , в котором этот самый pid и должен отдаватся.
Кроме того, gbak , должен корректно отрабатывать прерывание по Ctrl+C - сигнал завершения.
Т. е. ты ему по pid -у можешь послать сигнал завершения и он всё корректно закроет.
Возможно TProcess так и делает по Terminate() , но можно и явно ручками послать через FpKill()
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868528
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

госпидя. скопипастил из fibplus, и сделал свой клон, если автор ибх под лазарь такой дебил, что даже ключи почти десятилетней давности не может добавить в servapi.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868534
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvавтор ибх под лазарь такой дебил

И эти люди ещё удивляются почему я использую API напрямую...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868541
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvесли автор ибх под лазарь такой дебил, что даже ключи почти десятилетней давности не может добавить в servapi.
я не был столь категоричен :) он там много чего полезного (я надеюсь, все не щупал) наворотил

Но вот это
вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться

Свой клон делать - это надо программистом работать, вот выйду на пенсию :)

TonalВозможно TProcess так и делает по Terminate() , но можно и явно ручками послать через FpKill()
На стороне клиента TProcess.Terminate(), действительно, убивает gbak (кстати, на виндах метод вызывает TerminateProcess, а на линуксе FpKill). На винде огрызок файла бекапа все равно остается залоченным 30-60 сек, в линуксе можно сразу запускать и прерывать процесс бекапа бесконечно много раз.




Поэкспериментирую с удалением по MON$REMOTE_PID, потом отпишусь
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868542
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИ эти люди ещё удивляются почему я использую API напрямую...
я не удивляюсь, я тебе завидую :)
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868606
Фотография Tonal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

Здесь описано как правильно посылать Ctrl+C в винде.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868789
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокНо вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться
только что проверил. Поменял порт у фб на 3217. Запустил ФБ.
В Лазарусе коннект из IBXServicesConnection1 к
localhost/3217:service_mgr

отлично коннектится.

Когда меняю на localhost/3218:service_mgr

[Window Title]
Ошибка

[Content]
Unable to complete network request to host "localhost".
Failed to establish a connection

[ОК]

так что всё там работает. Ты просто или ФБ не запустил, или в конфиге ФБ не тот порт указал, или не рестартанул ФБ после изменения порта.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868869
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvДокНо вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться
так что всё там работает. Ты просто или ФБ не запустил, или в конфиге ФБ не тот порт указал, или не рестартанул ФБ после изменения порта.
Вряд ли, у меня, как минимум, две версии сервера всегда крутятся. IBE доволен :). Вечерком проверю, конечно.

А у тебя сервак запущен как приложение или как сервис?
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39868997
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокА у тебя сервак запущен как приложение или как сервис?
как приложение, но в случае tcp это не имеет никакого значения.
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869213
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

скорее всего, у тебя че-та в реестре или в переменных среды есть, чего нет у меня.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Attempting to connect to:
localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB... Connected successfully.
Server version: WI-V6.3.7.18553 Firebird 2.1
 
Disconnecting from database... Passed!
 
Attempting to connect to services manager:
localhost/3217:service_mgr... Connected successfully.

cmd
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
C:\Users\leyba>cd /d D:\Portable_program\Firebird_server\Firebird_2_1_7\bin\

D:\Portable_program\Firebird_server\Firebird_2_1_7\bin>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect 'localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB' user sysdba password 'cooladmin';
Database:  'localhost/3217:D:\Archive\Databases\general_base\FB_2_1\GENERAL_BASE_4X_2016_03_30.FDB', User: sysdba
SQL> show version;
ISQL Version: WI-V2.1.7.18553 Firebird 2.1
Server version:
Firebird/x86/Windows NT (access method), version "WI-V2.1.7.18553 Firebird 2.1"
Firebird/x86/Windows NT (remote server), version "WI-V2.1.7.18553 Firebird 2.1/tcp (leyba-pc)/P11"
Firebird/x86/Windows NT (remote interface), version "WI-V2.1.7.18553 Firebird 2.1/tcp (leyba-pc)/P11"
on disk structure version 11.1


да и х@р с ним :)
Будет время, отпишу ему
...
Рейтинг: 0 / 0
Корректное завершение gbak/isql при b/r
    #39869219
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГРАЖДАНЕ!

вот нахрена вы оборачиваете значимую часть сообщения в СПОЙЛЕР?!!
просто потому что "красиво"?

ИЗАБЭЛЛА, йопть!

зы: по nntp не читаемо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 173, страница 1 из 7
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Корректное завершение gbak/isql при b/r
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]