|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Преамбула: я тут задался целью написать для себя кроссплатформенный велосипед с использованием всех утилит FB "в одном стакане", чтобы не мыкаться с командной строкой. В прикладе используется компонент TProcess (лазарусовская обвязка вокруг ShellExecute/System), который создается в доп.потоке, вызывает gbak/isql и т.д., ждет окончания их работы и благопристойно умирает вместе с потоком. В ситуации, когда нужно срочно прервать b/r, мне необходимо сначала корректно завершить работу gbak/isql. Если просто уничтожить поток вместе с выполняющимся b/r, то утилиты, очевидно, лочат какое-то время выводимые файлы, потому что при повторной попытке запустить процесс я в течение 30-60 сек не могу удалить "неудачный" бекап и получаю отлуп: Код: sql 1. 2.
Я читал про мониторинг, но 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- ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 15:54 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, для gbak можно было сразу воспользоваться ServiceAPI и получить полный контроль за всем происходящим. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 16:15 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисможно было сразу воспользоваться ServiceAPI можно подробнее для гуманитария, что ты имел ввиду? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 16:39 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, MON$REMOTE_PID ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 16:42 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Докможно подробнее для гуманитария, что ты имел ввиду? :) в IBX лазаря нет IBBackupService? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 16:48 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисв IBX лазаря нет IBBackupService? в данном случае я не использую его hvladMON$REMOTE_PID а как извлечь его из текущего соединения gbak? Есть какие-нибудь ключи? Или придется изучать низкоуровневой доступ к БД? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:04 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, когда ты запускал дочерний процесс, ты мог получить его PID. Кстати ДокМожно, конечно, вычислить "виновника" по MON$REMOTE_PROCESS, но в этом случае грохнутся соседние экземпляры моего приложения, которые в этом время будут делать что-то ещетвои приложения называются gbak.exe ? :) PS PID - это process ID (на всякий) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:09 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvladкогда ты запускал дочерний процесс, ты мог получить его PID. ага, вот ты о чем! Я наивно полагал, что PID надо получать из таблиц мониторинга :) Щас спрошу на лазаревском форуме, можно ли получить PID из TProcess. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:27 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvladтвои приложения называются gbak.exe ? :) :) нет, конечно, но я сделал вывод по аналогии, глядя в таблицы MON$ATTACHMENTS двух запущенных экземпляров IBE ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:28 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Симонов Денисвоспользоваться ServiceAPI и получить полный контроль за всем происходящим. Авотфиг. Там не то что "полного", там минимального контроля и то нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:28 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокСимонов Денисв IBX лазаря нет IBBackupService? в данном случае я не использую его А почему ты его не используешь? Потому, что ты хочешь получать бэкап-файл на локальной (не серверной) машине, или еще почему-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:29 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ёёёёёА почему ты его не используешь? Потому, что ты хочешь получать бэкап-файл на локальной (не серверной) машине, или еще почему-то? В том числе. Я уже писал раньше, что на текущий момент, пилящиеся под Лазарь IBX от mwasoftware, либо не удовлетворяют потребностям последних версий FB (например, legacy-компоненты, оставшиеся в составе этой библы от первоисточника, не имеют пропертей обработки ключей -fix_fss_d/fix_fss_m), либо еще сырые и дают ошибки коннекта, если сервер(а) (например, в винде) установлен(ы) и запущен(ы) не стандартным инсталлятором, а из архивов и вручную. Плюсуй сюда упертость автора, что продукт лучше развивать в соответствии с хотелками (в разумных пределах, конечно) пользователей, а не автора. Плюс независимость от нестандартных компонент доступа. В итоге получишь мои резоны :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:51 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Докя сделал вывод по аналогии, глядя в таблицы MON$ATTACHMENTS двух запущенных экземпляров IBEIBE не запускает gbak. Он использует Service API ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 17:59 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
hvlad, Влад, спасибо за наводку. Пошел пилить дальше ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 18:32 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, А вот в linux расширения .exe не будет. :) У TProcess есть свойство ProcessID , в котором этот самый pid и должен отдаватся. Кроме того, gbak , должен корректно отрабатывать прерывание по Ctrl+C - сигнал завершения. Т. е. ты ему по pid -у можешь послать сигнал завершения и он всё корректно закроет. Возможно TProcess так и делает по Terminate() , но можно и явно ручками послать через FpKill() ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 18:47 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Док, госпидя. скопипастил из fibplus, и сделал свой клон, если автор ибх под лазарь такой дебил, что даже ключи почти десятилетней давности не может добавить в servapi. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2019, 23:06 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdvавтор ибх под лазарь такой дебил И эти люди ещё удивляются почему я использую API напрямую... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 00:08 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdvесли автор ибх под лазарь такой дебил, что даже ключи почти десятилетней давности не может добавить в servapi. я не был столь категоричен :) он там много чего полезного (я надеюсь, все не щупал) наворотил Но вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться Свой клон делать - это надо программистом работать, вот выйду на пенсию :) TonalВозможно TProcess так и делает по Terminate() , но можно и явно ручками послать через FpKill() На стороне клиента TProcess.Terminate(), действительно, убивает gbak (кстати, на виндах метод вызывает TerminateProcess, а на линуксе FpKill). На винде огрызок файла бекапа все равно остается залоченным 30-60 сек, в линуксе можно сразу запускать и прерывать процесс бекапа бесконечно много раз. Поэкспериментирую с удалением по MON$REMOTE_PID, потом отпишусь ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 00:52 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovИ эти люди ещё удивляются почему я использую API напрямую... я не удивляюсь, я тебе завидую :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 00:53 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 13:24 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокНо вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться только что проверил. Поменял порт у фб на 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 [ОК] так что всё там работает. Ты просто или ФБ не запустил, или в конфиге ФБ не тот порт указал, или не рестартанул ФБ после изменения порта. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2019, 23:20 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdvДокНо вот это вкупе с необходимостью чего-то доказывать, напрочь отбивает охоту ими пользоваться так что всё там работает. Ты просто или ФБ не запустил, или в конфиге ФБ не тот порт указал, или не рестартанул ФБ после изменения порта. Вряд ли, у меня, как минимум, две версии сервера всегда крутятся. IBE доволен :). Вечерком проверю, конечно. А у тебя сервак запущен как приложение или как сервис? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 08:03 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
ДокА у тебя сервак запущен как приложение или как сервис? как приложение, но в случае tcp это не имеет никакого значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 11:17 |
|
Корректное завершение gbak/isql при b/r
|
|||
---|---|---|---|
#18+
kdv, скорее всего, у тебя че-та в реестре или в переменных среды есть, чего нет у меня. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
cmd Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
да и х@р с ним :) Будет время, отпишу ему ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2019, 15:15 |
|
|
start [/forum/topic.php?fid=40&msg=39869213&tid=1560551]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
128ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 240ms |
0 / 0 |