powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Триггер на дисконнект. когда должен сработать?
25 сообщений из 42, страница 1 из 2
Триггер на дисконнект. когда должен сработать?
    #39619092
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую триггер на дисконнект, хочу почистить некие хвосты в базе по отключению юзера.

1. прикладная программа завершается штатно - триггер сработал.
2. прикладная программа завершается аварийно(грохнул через таск менеджер) - триггер сработал.
3. вышвырнул юзера delete from mon$attachments - триггер не сработал.

пункт 3 это бага? в треккер?
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39619097
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

AFAIK, удаление из MON$ATTACHMENTS соединение не убивает. Повторная попытка использовать соединение приведет к ошибке, и тогда по идее триггер сработает. Но это так - пальцем в небо, сразу говорю.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39619108
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

нет. Обсуждалось уже
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39619129
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky3. вышвырнул юзера delete from mon$attachments - триггер не сработал.Сработает. Когда будет рельный дисконнект.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39619153
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladIvan_Pisarevsky3. вышвырнул юзера delete from mon$attachments - триггер не сработал.Сработает. Когда будет рельный дисконнект.Подождать keepalive интервал? Завтра проверю.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39619162
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

Сетевое соединение не разрывается, чтобы клиент мог получить корректное сообщение об ошибке (isc_att_shutdown).
Если клиент спит часами, то и сетевого дисконнекта не будет.
Поэтому keepalive тут не при чём.

Но.
Я ещё раз это всё посмотрел - в 2.5 таки не вызывается триггер при отстреле из мониторинга, и при шатдауне БД.
А вот в 3 - вызывается. Вроде :)
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39623751
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА вот в 3 - вызывается. Вроде :)Дошли таки руки проверить, на двушке как ты и говорил триггер не срабатывает. С двушке я потихоньку уползаю, так что это для меня не приоритет.

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

Таки писать треккеру?

Я понимаю, что триггер не панацея, неожиданно умереть может и сам сервер (например сбой по питанию), но все таки, если коннект обрубается штатными средствами сервера, триггер должен работать, иначе какой в нем смысл?
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39623776
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

насколько помню (но могу и путать), явный отстрел коннектов (в отличие от штатного дисконнекта или отвала сети) хотели сделать максимально быстрым. Выполнять при этом триггеры, которые ХЗ что делают, не хотелось.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39623780
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrВыполнять при этом триггеры, которые ХЗ что делают, не хотелось.Есть же режим no_db_triggers на коннекте, чтоб кривой триггер на коннект обойти. У то го же shutdown-а тоже есть немного настроек... может их употребить?
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624022
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, нелогично, что на коннект есть отключающий триггеры параметр, а на дисконнект нет :)
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624050
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

пересмотрел ещё раз 3-ку - там, хоть и менялся код отвечающий за шатдаун\дисконнект, но триггеры на дисконнект всё же не вызываются.

Давайте обсудим. Есть несколько причин для дисконнекта:
- по просьбе приложения (т.е. штатный дисконнект)
- обрыв связи с приожением
- удаление коннекта через мониторинг
- шатдаун БД, вызванный сисадмином
- шатдаун сервера в целом

В текущей реализации только синхронный дисконнект (первые два пункта) вызывает срабатывание триггера.
Все случаи асинхронного дисконнекта (все остальные случаи) - не вызывают.
Для этого есть причина - когда нужно максимально быстро погасить БД (например пропало питание и админ\скрипт экстренно гасит всё подряд), триггеры лучше не вызывать.
Кроме того, код дисконнекта не знает причину дисконнекта.

Мне кажется разумным вызывать триггеры в таких случаях
- удаление коннекта через мониторинг
- шатдаун БД, вызванный сисадмином - если он не форсирован

Есс-но, это может быть сделано в 4-ке. Бекпорт в 3 не обещается

Какие будут мнения ?
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624051
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryСобственно, нелогично, что на коннект есть отключающий триггеры параметр, а на дисконнект нет :)Нет такого параметра.
Есть другой - он отключает все database триггеры, не только на коннект
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624055
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladМне кажется разумным вызывать триггеры в таких случаях
- удаление коннекта через мониторинг


как по мне этот вариант спорный. Удаление коннекта через мониторинг может рассматриваться админом как экстренная мера, требующая как можно более быстрого дисконнекта. Кмк тут нужно давать право выбора.

В случае шатдауна всё понятно, как минимум админ может уточнять какой именно шатдаун он хочет
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624057
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисУдаление коннекта через мониторинг может рассматриваться админом как экстренная мера, требующая как можно более быстрого дисконнекта. Кмк тут нужно давать право выбора.Каким образом ?
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624059
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

может быть указывать через контекстные переменные или через изменение окружения оператором типа
SET MON_CONN_MODE <mode>
И сделать так чтобы этот оператор срабатывал вне транзакции как это сделано например для управления тайм-аутами

P.S. Нормальное имя переменной не приходит в голову
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624065
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladWildSeryСобственно, нелогично, что на коннект есть отключающий триггеры параметр, а на дисконнект нет :)Нет такого параметра.
Есть другой - он отключает все database триггеры, не только на коннектЯ потому смайлик и поставил.

На самом деле, "экстренное выключение" выполняется специально написанным батником, который сперва выполняет короткие "завершающие" SQL-операции (и здесь же можно написать выключение триггера на дисконнект, если бы он был), а уже затем тушит базу.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624069
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

я бы хотел что бы как можно больше операций было доступно через SQL. Например, было бы неплохо чтобы через SQL можно было делать и shutdown, только если он не full. Сделал shutdown, накатил изменения, вернул БД в онлайн и всё это в одном SQL скрипте без прыжков между различными инструментами.

Я уже предлагал такое http://www.sql.ru/forum/1103091/shutdown-online-iz-skripta
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624131
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladДавайте обсудим. Есть несколько причин для дисконнекта:
- по просьбе приложения (т.е. штатный дисконнект)
- обрыв связи с приожением
- удаление коннекта через мониторинг
- шатдаун БД, вызванный сисадмином
- шатдаун сервера в целомпервые 2 реализованы, вопросов к ним у меня нет.
3. если бы можно было навесить свои триггеры на системные таблицы и они спокойно(штатно) переживали бы бэкап-рестор, то вопроса бы не возникло.
4. доп параметр шатдауна тоже снимет все вопросы.
5. у меня нет тут явного решения. Как вариант разделить триггеры на бефор и афтер коннект/дисконнект и исполнять какие-нибудь одни. И пусть программист решает, что важнее быстро погаснуть или исполнить весь сценарий дисконнекта.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624135
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

3. Нет смысла говорить о несуществующем :)
4. Да, у меня тоже была такая идея.
5. Тут типичный конфликт интересов программиста и администратора: первый хочет меньше кодировать, второй хочет чтобы всё "летало и не падало" ("само", есс-но).
Шатдаун сервера в эктренной ситуации за минимально возможное время - это всё же ответственность не программиста, так что я тебя тут не подержу - не должен программист решать что важнее в данном случае.
И - да - это означает, что он (программист) должен уметь обрабатывать такие ситуации (есс-но, когда всё снова поднимется в штатном режиме)
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624140
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У шатдауна же был параметр "время" (или только в режиме force - не помню). Недостаточно просто дать триггерам выполниться за это время, а кто не успел - их проблемы? Потому что если вводить доп.параметр, то могут появиться проблемы с "не-шатдауном" из-за выполняющихся триггеров.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624158
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

это время ожидания добровольного дисконнекта других.
Если они не успеют -шатдаун отменяется.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624171
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad3. Нет смысла говорить о несуществующем :)Как фичреквест для четверки? Тем более это идея возникла не у меня, тут в форуме уже были "пионэры", которые делали нечто подобное, правда жаловались, что оно не "тово".

Да по идее логично дать триггеру сработать при удалении через монатачмент.

Мне лично это доставило минимум проблем, у меня есть гуевая "отключалка", я туда впендюрил еще один запрос с логикой из триггера на дисконнект и вопрос для себя решил.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624184
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyДа по идее логично дать триггеру сработать при удалении через монатачмент.

не всегда. Как минимум два варианта: считать что ситуация со срубанием через мониторинг нормальная и триггер должен отработать, или это срубание вызвано какой-то экстренной ситуацией и триггер срабатывать не должен.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624186
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

что-то я тебя потерял, ты о чём сейчас ?

О триггерах на таблицы мониторинга ?
Их нет и не будет.
Как нет и самых событий insert\update\delete для этих псевдо-таблиц.

Или всё же о триггере на дисконнект ?
Это как раз обсуждается.
...
Рейтинг: 0 / 0
Триггер на дисконнект. когда должен сработать?
    #39624187
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисКак минимум два варианта: считать что ситуация со срубанием через мониторинг нормальная и
триггер должен отработать, или это срубание вызвано какой-то экстренной ситуацией и
триггер срабатывать не должен.

Если к базе ещё удаётся послать запрос на удаление из таблицы, то ситуация совсем не
экстренная.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Триггер на дисконнект. когда должен сработать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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