powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
87 сообщений из 87, показаны все 4 страниц
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312105
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Начиная с версии Firebird 2.5.3, не удаётся сделать shutdown базы если есть два и более неиспользуемых соединения к ней.
Команда:
Код: sql
1.
gfix -shut -force 0 ...

просто зависает.

Аналогичную проблему я видел в этой теме (Сценарий-2), но там решения я не нашёл..

Как вообще организовать shutdown базы, если есть приложение с пулом соединений?
Почему-то при попытке shutdown базы с ключом -attach приложение зависает на попытке закрытия одного соединения до тех пор пока не закончится timeout у shutdown'а...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312112
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudКак вообще организовать shutdown базы, если есть приложение с пулом соединений?

Для начала надо очень сильно обосновать необходимость этого.
Потом - прочитать полный мануал по gfix и особенно внимательно - раздел о shutdown modes.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312125
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovДля начала надо очень сильно обосновать необходимость этого.

Необходимость shutdown'а или pool'а соединений?

Dimitry SibiryakovПотом - прочитать полный мануал по gfix и особенно внимательно - раздел о shutdown modes.

Читал вот эту статью.
Есть более полный мануал?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312136
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudНачиная с версии Firebird 2.5.3
вплоть до 2.5.6?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312144
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitrвплоть до 2.5.6?
да
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312153
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudНеобходимость shutdown'а или pool'а соединений?

Их совместного использования.

vitkudЧитал вот эту статью.
Очевидно, только первую половину, которая не относится к версии 2.5.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312185
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudАналогичную проблему я видел в этой теме (Сценарий-2), но там решения я не нашёл..Даже в указанной теме в первом же сообщении видна правильная строка для шатдауна.

gfix -shut full -force 0
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312187
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovvitkudНеобходимость shutdown'а или pool'а соединений?

Их совместного использования.

пул соединений используется потому как приложения (их несколько) серверные, а shutdown используется в отдельном спец. приложении для обновления, уплотнения и прочих операция с базой... при этом серверные приложения завершать нельзя, они многофункциональные...

Dimitry SibiryakovОчевидно, только первую половину, которая не относится к версии 2.5.
я прочитал эту статью полностью.

по поводу shutdown force: похоже это всё-таки ошибка в FB: http://tracker.firebirdsql.org/browse/CORE-4742
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312192
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudя прочитал эту статью полностью.
Так с какого перепоя ты тогда используешь для версии 2.5 синтаксис версии 1.5?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312209
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovТак с какого перепоя ты тогда используешь для версии 2.5 синтаксис версии 1.5?

но ведь это не запрещено и в доке написано:
multi - this is the default mode ...
и это значение меня вполне устраивает, и я его явно не указываю для краткости.

в любом случае, использование любого другого режима не решает проблему
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312211
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladДаже в указанной теме в первом же сообщении видна правильная строка для шатдауна.

gfix -shut full -force 0

такой режим мне не подходит, а multi и так является режимом по умолчанию.
В любом случае, даже такое решение не работает.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312214
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudВ любом случае, даже такое решение не работает.

В твоём случае никакое решение не будет работать, обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312218
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovВ твоём случае никакое решение не будет работать, обломись.

Спасибо на добром слове.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312229
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkud,

сейчас по-быстрому проверил - действительно, gfix в 2.5.6 ждёт, пока другие коннекты сами не отвалятся.
В 3.0 не ждёт.
Возможно я чего-то не помню на эту тему, думал что в 2.5 это было исправлено.

PS не ведись на Сибирякова, у него хамство бежит впереди всего остального
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312251
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladу него хамство бежит впереди всего остального
Зато ты сегодня даже мозг включать не требуешь. Съел чего-нибудь нехорошее? Или просто не
обратил внимание на слова "уплотнение базы"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312261
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

тебя нет.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312663
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
злые вы
велосипеды вам надо
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39312852
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovhvladу него хамство бежит впереди всего остального
Зато ты сегодня даже мозг включать не требуешь. Съел чего-нибудь нехорошее? Или просто не
обратил внимание на слова "уплотнение базы"?..

если уж делать "стройную систему подпорок и костылей", то можно делать в два шага, наверное.
Сначала базу переводить в полный шатдаун, а потом переводить в single-user для обслуживания.
Ну и потом - обратно в норму.

Хотя один чёрт непонятно - а почему нельзя исправить само приложение.
Или на худой конец рвануть все коннекты файрволом на долю секунды.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313043
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

да хрен знает, кто там "зависает", и как. shut -force блокирует коннекты, понятно что они "зависают", надо отключиться и подключиться снова (под sysdba).
Насчет "уплотнения базы" - да, стрёмный термин, неясно что там автор себе соображает.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313235
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvда хрен знает, кто там "зависает", и как. shut -force блокирует коннекты, понятно что они "зависают", надо отключиться и подключиться снова (под sysdba).
Пороблема в том что зависает процесс "shut -force" хотя там стоит таймаут 0, а вот в 2.5.2 всё нормально...

kdvНасчет "уплотнения базы" - да, стрёмный термин, неясно что там автор себе соображает.
Я прошу прощения что не знаю устоявшийся русский термин. Это я о том, о чём написано тут , т.е. о backup/restore..
Просто базы иногда "раздуваются" и сами обратно не "сдуваются", а места мало... Эта практика пошла еще с 1.5, может в 2.5 есть другой механизм для этого?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313240
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkud,

если мусор собирается, то никаких "вспучиваний" не будет. Свободное пространство будет использовано повторно.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313261
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochесли уж делать "стройную систему подпорок и костылей", то можно делать в два шага, наверное.
Сначала базу переводить в полный шатдаун, а потом переводить в single-user для обслуживания.
Ну и потом - обратно в норму.
Собственно проблема в том, что не удаётся перевести базу в шатдаун (начиная с 2.5.3) нитка зависает..

AriochХотя один чёрт непонятно - а почему нельзя исправить само приложение.
Или на худой конец рвануть все коннекты файрволом на долю секунды.
Тут проблема в том, что есть много приложений (и локальных, и удалённых) и много баз, и нельзя останавливать ни приложения, ни Firebird.
Если не использовать механизм shutdown, то для удаления базы надо как-то оповестить все приложения о том что эта база готовится к удалению, и дождаться когда все отцепятся. Но если хоть одно приложение "зависло" с открытым соединением - то облом.. Плюс нужно придумать механизм для оповещения, в том числе и удалённых приложений (без доступа к ФС).

А вообще, я правильно понимаю что использование механизма shutdown всячески порицается?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313270
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисесли мусор собирается, то никаких "вспучиваний" не будет. Свободное пространство будет использовано повторно.
Иногда в базу попадет много ненужных данных (по ошибке пользователей или ПО, не важно), и после их удаления база остаётся огромных размеров...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313289
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudА вообще, я правильно понимаю что использование механизма shutdown всячески порицается?Совершенно не правильно
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313297
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudА вообще, я правильно понимаю что использование механизма shutdown всячески порицается?

Порицается не использование shutdown, а бессмысленное использование backup/restore. Точнее backup нужен всегда, а вот постоянный рестор для уменьшения БД абсолютно бессмысленное занятие.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313330
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисПорицается не использование shutdown, а бессмысленное использование backup/restore. Точнее backup нужен всегда, а вот постоянный рестор для уменьшения БД абсолютно бессмысленное занятие.
Но мой вопрос именно про shutdown, backup/restore используется совсем не часто, но используется и эффект есть... А гораздо чаще я использую shutdown для подмены базы в интеграционных тестах, но это не имеет отношения к теме..
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313334
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudПлюс нужно придумать механизм для оповещения, в том числе и удалённых приложений (без доступа к ФС).

http://www.sql.ru/forum/187250
http://www.firebirdsql.org/file/documentation/papers_presentations/Power_Firebird_events.pdf
http://firebirdsql.org/file/documentation/reference_manuals/reference_material/Firebird-2_5-LangRef-Update-Russian.pdf
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313336
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudЕсли не использовать механизм shutdown, то для удаления базы надо как-то оповестить все приложения о том что эта база готовится к удалению

еще можно попробовать отстрелить соединения с помощью monitoring tables вроде бы, но говорят не всегда хорошо получается

а сервер - супер или классик?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313409
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch http://www.sql.ru/forum/187250
http://www.firebirdsql.org/file/documentation/papers_presentations/Power_Firebird_events.pdf
http://firebirdsql.org/file/documentation/reference_manuals/reference_material/Firebird-2_5-LangRef-Update-Russian.pdf
Спасибо, но это вариант не подходит, т.к. приложению еще нужно понять что подсоединяться к БД можно, а как сделать это не соединяясь с ней?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313417
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochа сервер - супер или классик?
SS... Но хотелось бы, конечно, универсальное решение...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313558
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudAriochа сервер - супер или классик?
SS... Но хотелось бы, конечно, универсальное решение...

просто на классике можно отстреливать через процессы

попробуй отключать всех через мониторинговые таблицы.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313563
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudприложению еще нужно понять что подсоединяться к БД можно, а как сделать это не соединяясь с ней?

а как оно это поймёт в случае shutdown'a ?

сделай после события достаточно большую паузу между пересоединениями чтобы все успели отключиться и shutdown успел отработать

Либо уже заводи отдельную цетнрализованную БД "доступность рабочих БД" и пуст ьвсе аппликухи туда поглядывают.
Заодно сможешь сделать веб-страничку "статус наших баз данных"
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313607
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochvitkudпропущено...

SS... Но хотелось бы, конечно, универсальное решение...

просто на классике можно отстреливать через процессы

попробуй отключать всех через мониторинговые таблицы.

не забудь прибить sweep заодно. очень полезно для здоровья базы.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313659
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochа как оно это поймёт в случае shutdown'a ?
в случае shutdown force 0 база сразу переходит в shutdown и обычные пользователи не могут подключиться, но это работало до 2.5.3. А в 2.5.3-2.5.6 все зависают...

А shutdown attach с таймаутом не получатся использовать, потому как он не только "замораживает" попытки открытия баз, но и попытки закрытия, и если в одном потоке несколько соединений, то поток ждёт пока не закончится таймаут у shutdown'а, и только потом закрывает все соединения, а сам shutdown, соответственно, завершается неудачей...

Ariochсделай после события достаточно большую паузу между пересоединениями чтобы все успели отключиться и shutdown успел отработать
получается что нельзя запускать shutdown пока все не отключатся, а как узнать что все отключились?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313663
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudа как узнать что все отключились?

через мониторинговые таблицы от SYSDBA

ну или таки сделай все же центральную БД доступности
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313664
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkud,

ну и да, служебные пoдключения типа sweep'a тоже учитывай
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313732
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudбаза остаётся огромных размеров...
например? 100 гиг, 500 гиг?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313942
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudSS... Но хотелось бы, конечно, универсальное решение...Самым универсальным решением будет написать управляющую службу по типу fbguard, которая по отдельному tcp порту будет "рассказывать" клиентам о состоянии службы сервера и баз данных, а также, при необходимости, производить все необходимые манипуляции по shutdown'у баз, остановки службы сервера и т.д.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313960
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudКак вообще организовать shutdown базы, если есть приложение с пулом соединений?
Почему-то при попытке shutdown базы с ключом -attach приложение зависает на попытке закрытия одного соединения до тех пор пока не закончится timeout у shutdown'а... "-at[tach] : this parameter prevents any new connections to the database from being made with the exception of the SYSDBA and the database owner. The shutdown will fail if there are any sessions connected after the timeout period has expired. It makes no difference if those connected sessions belong to the SYSDBA, the database owner or any other user."
Gfix - Database Housekeeping -> Database Startup and Shutdown

Что мешает рубануть запросом в isql из имени SYSDBA или владельца БД все пользовательские соединения, пока выполняется:
gfix -shut -attach <timeout> <db> ?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39313964
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*из isql от имени SYSDBA

P.S. И почему на форуме не сделана возможность исправления своих сообщений? Не понимаю.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314072
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

1) потому что NNTP
2) потому что тролли этим пользовались, чтобы задним числом удалять компромат
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314086
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvнапример? 100 гиг, 500 гиг?
Ха, бывает что в системе всего 32 гига, а нужно еще место для бэкапов..
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314098
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudбывает что в системе всего 32 гига, а нужно еще место для бэкапов..

Если бэкапы делаются на тот же диск, где и сама база, то можно сэкономить: вообще их не
делать. Всё равно они совершенно бесполезны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314177
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_dev "-at[tach] : this parameter prevents any new connections to the database from being made with the exception of the SYSDBA and the database owner. The shutdown will fail if there are any sessions connected after the timeout period has expired. It makes no difference if those connected sessions belong to the SYSDBA, the database owner or any other user."
Gfix - Database Housekeeping -> Database Startup and Shutdown
Да в описании всё хорошо, но на практике, вызывая gfix -shut -attach <timeout> мы блокируем клиентов, которые хотят "добровольно" закрыть все свои соединения (если их больше одного)...

rdb_devЧто мешает рубануть запросом в isql из имени SYSDBA или владельца БД все пользовательские соединения, пока выполняется:
gfix -shut -attach <timeout> <db> ?
Я просто не знал что есть такая возможность... пойду искать как это делается..
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314261
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudно на практике, вызывая gfix -shut -attach <timeout> мы блокируем клиентов, которые хотят "добровольно" закрыть все свои соединения (если их больше одного)...Это что-то новое
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314369
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudЯ просто не знал что есть такая возможность... пойду искать как это делается..Вот как-то так:
Код: cmd
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
@echo off
setlocal
if "%~1"=="" goto :drop_attachments
set db_path=%~1
if "%~2"=="" (
  set db_user=sysdba
  set db_password=masterkey
) else (
  set db_user=%~2
  set db_password=%~3
)

start test.cmd
gfix -user "%db_user%" -password "%db_password%" -shut single -attach 3 "%db_path%"
endlocal
goto :eof

:drop_attachments
ping -n 1 -w 1000 -k "127.0.0.2" 1.1.1.1>nul
echo SET SQL DIALECT 3;^
 CONNECT '%db_path%' USER '%db_user%' PASSWORD '%db_password%';^
 DELETE FROM MON$ATTACHMENTS WHERE MON$USER != '%db_user%';^
 COMMIT WORK;^
 QUIT;^
 | isql -quiet -z
echo %sql%
exit
Вызываешь примерно так: db_shutdown.cmd "127.0.0.1/gds_db:my_database" "SYSDBA" "masterke"
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314371
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот же кривущий форматтер!... Не забудь убрать лишние строки, особенно после строк, заканчивающихся на ^
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314541
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladЭто что-то новое
Вот скрипт на Groovy:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
@Grapes([
        @Grab(group='org.firebirdsql.jdbc', module='jaybird-jdk18', version='2.2.11'),
        @GrabConfig(systemClassLoader = true),
])

def dbUser = 'someUser'
def dbPassword = 'somePassword'

// Create database
File dbFile = File.createTempFile 'tmp', '.fdb'
dbFile.delete()
dbFile.deleteOnExit()
org.firebirdsql.management.FBManager.newInstance().with {
    start()
    createDatabase dbFile.path, 'SYSDBA', 'masterkey'
    stop()
}
def dbUrl = 'jdbc:firebirdsql:localhost:' + dbFile.path

// Open connection pool
def connPool = [
        java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPassword),
        java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPassword),
        java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPassword),
]

// Gradual closing of connections in another thread
Thread.start {
    connPool.each {
        Thread.sleep(1000)
        println 'close connection begin'
        it.close()
        println 'close connection end'
    }
}

// Shutdown database
println 'shutdown started'
try {
    org.firebirdsql.management.FBMaintenanceManager.newInstance().with {
        host = 'localhost'
        database = dbFile.path
        user = 'SYSDBA'
        password = 'masterkey'
        shutdownDatabase OPERATION_MODE_MULTI, SHUTDOWNEX_ATTACHMENTS, 20
    }
    println 'shutdown finished'
} catch (Exception e) {
    println "shutdown error: $e"
}

// Delete database
while (!dbFile.delete())
    Thread.sleep 100
println 'database removed'


который создаёт пустую базу, открывает 3 соединения к ней, и пытается перевести её в режим shutdown в течении 20 сек. Параллельно, в отдельном потоке, пытается закрыть по одному соединению в секунду. Но при попытке закрыть первое же соединение, поток "замирает" до неудачного завершения shutdown'а, и только после этого закрывает остальные соединения.
Вот такой вывод у меня в консоль:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
shutdown started
close connection begin
 ... спустя 19 секунд ...
close connection end
shutdown error: org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544557. database shutdown unsuccessful
close connection begin
close connection end
close connection begin
close connection end
database removed
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314559
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudПараллельно, в отдельном потоке, пытается закрыть по одному соединению в секунду. Но при попытке закрыть первое же соединение, поток "замирает" до неудачного завершения shutdown'а, и только после этого закрывает остальные соединения.Есс-но. Оно же всё в одном потоке.
У тебя в примере нет никаких
vitkudклиентов, которые хотят "добровольно" закрыть все свои соединения (если их больше одного).Ибо кроме gfix'а есть ровно один клиент, который что-то там хочет.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314563
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверил с isql:
запустил 3 штуки isql

запустил gfix -shut -force 0
он висит

в каждом isql делаю exit - никакого ожидания, мгновенный дисконнект с ошибкой database shutdown на попытках коммита своих тр-ций.
Если сделать commit заранее (сразу после старта isql и до запуска gfix) - никаких ошибок на exit нет.

После последнего дисконнекта gfix просыпается и тоже отключается, без ошибки
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314565
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devВот как-то так:
...
Спасибо за пример, я и сам уже попробовал такой вариант, он не работает. Соединение в отдельном потоке/процессе, после запуска процедуры shutdown, не создаётся пока shutdown не завершится.. Попытка создать соединение раньше - не помогает..
Но зато, думаю, заработает вариант с поочерёдным запуском shutdown'а с нулевым таймаутом и запроса закрывающего соединения, и так до победного конца.. кривовато, конечно..
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314569
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladЕсс-но. Оно же всё в одном потоке.
У тебя в примере нет никаких
vitkudклиентов, которые хотят "добровольно" закрыть все свои соединения (если их больше одного).Ибо кроме gfix'а есть ровно один клиент, который что-то там хочет.
в моём описании "их" относилось к соединениям, т.е. несколько клиентов с несколькими соединениями в каждом. А для примера достаточно одного клиента с несколькими соединениями.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314576
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkud,

ты противоречишь сам себе.
Сначала говоришь про много соединений (неважно, сколько процессов на клиенте их создаёт).
В коде твоём нет "много соединений", они создаются и уничтожаются по-одному, последовательно.
Далее, опция -att не убивает текущие коннекты, в отличие от -force.
Если приспичило пользовать именно -att, сделай сначала DELETE FROM MON$ATTACHMENT в любом коннекте.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314584
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladПроверил с isql:
запустил 3 штуки isql

isql работает с одним соединением одновременно, а вот если например в IBExpert'е зарегистрировать дважды одну базу и открыть обе...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314632
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudisql работает с одним соединением одновременно, а вот если например в IBExpert'е зарегистрировать дважды одну базу и открыть обе...У тебя что, однопоточное приложение обслуживает сотню коннектов ?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39314744
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudСпасибо за пример, я и сам уже попробовал такой вариант, он не работает. Соединение в отдельном потоке/процессе, после запуска процедуры shutdown, не создаётся пока shutdown не завершится..У меня в isql от имени SYSDBA соединение прекрасно создается после "-shut -attach" и скрипт дропает подключения в соответствии с условием в предложении WHERE.
Если вы пишите какой-то высоконагруженный сервер, для которого необходим пул соединений и очень хотите, чтобы сервер сам закрывал свои соединения с базой, создайте отдельно службу управления базой/сервером FB с которой ваш высоконагруженный сервер будет держать соединение и получать от этой службы указания в том числе и на закрытие всех соединений.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315449
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladУ тебя что, однопоточное приложение обслуживает сотню коннектов ?
Почему сразу однопоточное? Потоков несколько, но пул соединений закрывается в одном.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315458
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devУ меня в isql от имени SYSDBA соединение прекрасно создается после "-shut -attach" и скрипт дропает подключения в соответствии с условием в предложении WHERE.
в смысле после неудачного выполнения "-shut -attach"? Так в чём тогда смысл? Или прямо во время выполнения? Тогда странно, у меня второй процесс ждёт когда завершится таймаут у shutdown'а, особенно заметно это если установить таймаут на 30 сек..

rdb_devЕсли вы пишите какой-то высоконагруженный сервер, для которого необходим пул соединений ...
да нет, обычной сервер, просто пул используется для того чтобы реже подключаться к БД..
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315466
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladты противоречишь сам себе.
Сначала говоришь про много соединений (неважно, сколько процессов на клиенте их создаёт).
В коде твоём нет "много соединений", они создаются и уничтожаются по-одному, последовательно.

Под соединениями я подразумеваю объекты типа "Connection", и изначально я писал о двух и более соединениях..

hvladДалее, опция -att не убивает текущие коннекты ...
это понятно, но он мешает закрыть пул соединений

hvlad... в отличие от -force.
а -force - зависает, начиная с 2.5.3...

hvladЕсли приспичило пользовать именно -att, сделай сначала DELETE FROM MON$ATTACHMENT в любом коннекте.
не приспичило, а вынужден... судя по всему придётся пользоваться таким решением, хоть оно и несколько "кривовато"...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315514
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkud,

я не вижу, чтобы дисконнекты зависали на фоне gfix -force
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315552
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladя не вижу, чтобы дисконнекты зависали на фоне gfix -force
вот практически тот же скрипт на Groovy:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
@Grapes([
        @Grab(group='org.firebirdsql.jdbc', module='jaybird-jdk18', version='2.2.11'),
        @GrabConfig(systemClassLoader = true),
])

def dbUser = 'someUser'
def dbPassword = 'somePassword'

// Create database
File dbFile = File.createTempFile 'tmp', '.fdb'
dbFile.delete()
dbFile.deleteOnExit()
org.firebirdsql.management.FBManager.newInstance().with {
    start()
    createDatabase dbFile.path, 'SYSDBA', 'masterkey'
    stop()
}
def dbUrl = 'jdbc:firebirdsql:localhost:' + dbFile.path

// Open connection pool
def connPool = [
        java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPassword),
        java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPassword),
        java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPassword),
]

// Gradual closing of connections in another thread
Thread.start {
    connPool.each {
        Thread.sleep(1000)
        println 'close connection begin'
        it.close()
        println 'close connection end'
    }
}

// Shutdown database
println 'shutdown started'
try {
    org.firebirdsql.management.FBMaintenanceManager.newInstance().with {
        host = 'localhost'
        database = dbFile.path
        user = 'SYSDBA'
        password = 'masterkey'
        shutdownDatabase OPERATION_MODE_MULTI, SHUTDOWNEX_FORCE, 20
    }
    println 'shutdown finished'
} catch (Exception e) {
    println "shutdown error: $e"
}

// Delete database
while (!dbFile.delete())
    Thread.sleep 100
println 'database removed'



с 2.5.2 вывод такой:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
shutdown started
close connection begin
 ... спустя 19 секунд ...
shutdown finished
close connection end
database removed
close connection begin
close connection end
close connection begin
close connection end



а вот вывод с 2.5.6:
Код: sql
1.
2.
shutdown started
close connection begin

и всё, не завершается..

кстати, если timeout у shutdown'а установить в 0, то на 2.5.6 такой вывод:
Код: sql
1.
2.
3.
4.
shutdown started
close connection begin
close connection end
close connection begin

но опять-таки зависает...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315566
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты уверен, что внутри у jdbc драйвера подключения и отключения не сериализуются?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315590
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkud, допилил, попробуй:

Создаем в БД процедуру:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SET TERM ^;
CREATE OR ALTER PROCEDURE DROP_ATTACHMENTS
  (
    timeout INTEGER NOT NULL
  )
AS
  DECLARE VARIABLE tmstmp TIMESTAMP;
BEGIN
  IF (:timeout <= 0) THEN EXIT;
  tmstmp = DateAdd(MILLISECOND, :timeout, CURRENT_TIMESTAMP);
  WHILE (DateDiff(MILLISECOND, Cast('Now' AS TIMESTAMP), :tmstmp) > 0) DO
    BEGIN END
  DELETE FROM MON$ATTACHMENTS;
END^
SET TERM ;^
COMMIT WORK;


cmd скрипт:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
@echo off
setlocal
if "%~1"=="" (
  if not "%db_path%"=="" (
    goto :drop_attachments
  ) else goto :eof
)
set db_path=%~1
if "%~2"=="" (
  set db_user=sysdba
  set db_password=masterkey
) else (
  set db_user=%~2
  set db_password=%~3
)

start db_shutdown.cmd
ping -n 1 -w 1000 -k "127.0.0.2" 1.1.1.1>nul
gfix -user "%db_user%" -password "%db_password%" -shut multi -attach 20 "%db_path%"
if errorlevel 1 goto :eof
echo Database "%db_path%" is shutted down successfully!
endlocal
goto :eof

:drop_attachments
echo SET SQL DIALECT 3;^
 CONNECT '%db_path%' USER '%db_user%' PASSWORD '%db_password%';^
 EXECUTE PROCEDURE DROP_ATTACHMENTS 2000;^
 COMMIT WORK;^
 QUIT;^
 | isql -quiet -z
exit
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315635
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devvitkud, допилил, попробуй:
...

Спасибо, попробовал - тоже самое. Я даже увеличил таймауты в 10 раз, и наблюдал по загрузки проца как ожидает своего часа процедура, но до тех пор пока shutdown не вылетит по timeout-у процесс с isql не завершается..
Собственно для проверки можно использовать тот же IBExpress: просто продублировать в нём соединение 2-3 раза и открыть их..
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315660
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkud,

Я вижу следующее:
- gfix -shut -force 0 блокируется до тех пор, пока не отсоединятся все существующие коннекты

- Существующие коннекты при этом блокируются при дисконнекте
(простые тесты с isql это не подтверждают)

- Приложение на JayBird с пулом коннектов не может одновременно сделать шатдаун (в одном потоке)
и закрыть все свои коннекты из другого потока.

Варианты:
а) написать трекеру и ждать когда починят в 2.5.6+ (я вижу, где он ждёт)
б) перейти на fb3 (там нет проблемы)
в) создать обходной путь, рассчитанный на конкретное приложение
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315714
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladvitkud,
Я вижу следующее:
- gfix -shut -force 0 блокируется до тех пор, пока не отсоединятся все существующие коннекты
- Существующие коннекты при этом блокируются при дисконнекте (простые тесты с isql это не подтверждают)Забавно, что если на момент запуска gfix -shut -attach к базе открыто не более двух любых подключений (включая подключение isql, в котором выполняется DELETE FROM MON$ATTACHMENTS), то ХП на удаление выполняется сразу и база нормально "кладется в shutdown".
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315769
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev
Код: plsql
1.
2.
 WHILE (DateDiff(MILLISECOND, Cast('Now' AS TIMESTAMP), :tmstmp) > 0) DO
    BEGIN END

Я не любитель фраз про "отрывание рук за такой код", но могу и пересмотреть свю точку зрения :)
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315770
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad- Существующие коннекты при этом блокируются при дисконнекте
(простые тесты с isql это не подтверждают)
да, с одним соединением проблем нет, а isql работает с одним соединением..

hvlad- Приложение на JayBird с пулом коннектов не может одновременно сделать шатдаун (в одном потоке)
и закрыть все свои коннекты из другого потока.
необязательно JayBird, то же самое повторяется с использованием IBExpert'а и gfix'а

hvladВарианты:
а) написать трекеру и ждать когда починят в 2.5.6+ (я вижу, где он ждёт)
я уже нашёл на трекере такую проблему: CORE-4742

hvladб) перейти на fb3 (там нет проблемы)
это всенепременно, но переход займёт много времени

hvladв) создать обходной путь, рассчитанный на конкретное приложение
так и поступлю.

Спасибо за уделённое время.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315781
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ не любитель фраз про "отрывание рук за такой код", но могу и пересмотреть свю точку зрения :)К сожалению, пока ничего лучше для реализации задержки в транзакции придумать не смог. Подскажи, если знаешь способ лучше.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315787
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudда, с одним соединением проблем нет, а isql работает с одним соединением..Да по барабану это.
isql нормально закрывает свой коннект, шатдаун этому не мешает.
Не мешает шатдаун закрывать коннекты.
Не мешает.

Прочитай вот тут *каждое* слово, а не через десять :
hvlad- Приложение на JayBird с пулом коннектов не может одновременно сделать шатдаун (в одном потоке)
и закрыть все свои коннекты из другого потока.
vitkudнеобязательно JayBird, то же самое повторяется с использованием IBExpert'а и gfix'аПроверил - не подтверждаю. IBE закрывает 4 клонированных DB и кричит при этом про database shutdown
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315788
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devhvladЯ не любитель фраз про "отрывание рук за такой код", но могу и пересмотреть свю точку зрения :)К сожалению, пока ничего лучше для реализации задержки в транзакции придумать не смог. Подскажи, если знаешь способ лучше.Лучше - не ставить себе глупые задачи ;)
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315796
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, да были бы задачи, а то так... Эксперимент. Хотелось из скрипта создать соединение до shutdown, а произвести DELETE FROM MON$ATTACHMENTS уже в процессе работы gfix -shut -attach.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315803
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devhvlad, да были бы задачи, а то так... Эксперимент. В качестве эксперимента, у себя - что угодно делай.
Но ты же другому человеку, да ещё и неопытному, каку советуешь...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315807
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ вижу следующее:
- gfix -shut -force 0 блокируется до тех пор, пока не отсоединятся все существующие коннектыКстати, проблема не наблюдается с SC\CS - gfix не блокируется, коннекты по факту отключены.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315809
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, ну почему сразу "каку"? Не вижу ничего плохого в том, что транзакция секунду пошуршит вхолостую перед отбрасыванием соединений к БД, ничего, при этом, не блокируя. Последний пример был как вариант для проверки, против предыдущего, где соединение из isql устанавливалось в уже процессе выполнения gfix -shut -attach.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315811
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devНе вижу ничего плохого в том, что транзакция секунду пошуршит вхолостую перед отбрасыванием соединений к БД, ничего, при этом, не блокируя.Это ты немножко пальцем в небо ткнул - и про "секунду", и про "не блокируя"
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315813
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

под Таблоида решил закосить?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315815
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, Таблоид тоже любитель поразвлечься с пакетными файлами? :)
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315817
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЭто ты немножко пальцем в небо ткнул - и про "секунду", и про "не блокируя"А это мысль... Надо попробовать DELETE FROM MON$ATTACHMENTS в автономной транзакции.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315827
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
те же яйца...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315851
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladПроверил - не подтверждаю. IBE закрывает 4 клонированных DB и кричит при этом про database shutdown
Да, действительно при shut ... -force 0 сам gfix ждёт пока не закроются все соединения, а в IBE они закрываются при "клике" на них, по еггогу (видать IBE пытается выполнит какой-нибудь служебный запрос). что в общем-то тоже не круто, ведь таймаут-то 0..
Но, если запустить shut ... -force 40, и в эти 40 секунд попытаться закрыть соединение - то будет самое неприятное :) (соединений должно быть минимум 3)
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315858
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudДа, действительно при shut ... -force 0 сам gfix ждёт пока не закроются все соединения, а в IBE они закрываются при "клике" на нихНу так чего тебе ещё надобно ?
vitkudчто в общем-то тоже не круто, ведь таймаут-то 00 в данном случае означает ожидание до упора. Что тебе "не круто" - я не знаю
vitkudНо, если запустить shut ... -force 40Тебе шашечки, или ехать ?

Ещё раз - SC\CS не имеют этой проблемы.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315865
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad, что-то давненько в ветке 2.5 не было ночных снапшотов с какими-либо исправлениями и/или дополнениями. Неужто 2.5 по тихому сняли с поддержки?
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315882
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad0 в данном случае означает ожидание до упора. Что тебе "не круто" - я не знаю
в документации этого нет, да и указание одной секунды не сильно меняет ситуацию..
а "не круто" то что если зависнет приложение с соединениями, то и моё зависнет при попытке shutdown'а..

hvladТебе шашечки, или ехать ?
Ехать с шашечками :)

hvladЕщё раз - SC\CS не имеют этой проблемы.
Но клиенты обычно ставят то что по умолчанию, а в Windows это SS...
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39315897
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudhvlad0 в данном случае означает ожидание до упора. Что тебе "не круто" - я не знаю
в документации этого неттеперь ты это знаешь

vitkudда и указание одной секунды не сильно меняет ситуацию..
а "не круто" то что если зависнет приложение с соединениями, то и моё зависнет при попытке shutdown'а..Тебе всё рассказали, даже больше. Решений несколько, выбирай любое.
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39317296
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitkudпо поводу shutdown force: похоже это всё-таки ошибка в FB: http://tracker.firebirdsql.org/browse/CORE-4742 Можешь завтра попробовать с новым снапшотом 2.5.7
...
Рейтинг: 0 / 0
FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
    #39317896
vitkud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladМожешь завтра попробовать с новым снапшотом 2.5.7
Проверил, работает! И force, и attach теперь работают как я ожидал.
Огромное спасибо!
...
Рейтинг: 0 / 0
87 сообщений из 87, показаны все 4 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB >2.5.2: gfix -shut -force 0 - зависает при двух открытых соединениях
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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