|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Пробую триггер на дисконнект, хочу почистить некие хвосты в базе по отключению юзера. 1. прикладная программа завершается штатно - триггер сработал. 2. прикладная программа завершается аварийно(грохнул через таск менеджер) - триггер сработал. 3. вышвырнул юзера delete from mon$attachments - триггер не сработал. пункт 3 это бага? в треккер? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 18:02 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, AFAIK, удаление из MON$ATTACHMENTS соединение не убивает. Повторная попытка использовать соединение приведет к ошибке, и тогда по идее триггер сработает. Но это так - пальцем в небо, сразу говорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 18:19 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, нет. Обсуждалось уже ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 18:37 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky3. вышвырнул юзера delete from mon$attachments - триггер не сработал.Сработает. Когда будет рельный дисконнект. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 19:49 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvladIvan_Pisarevsky3. вышвырнул юзера delete from mon$attachments - триггер не сработал.Сработает. Когда будет рельный дисконнект.Подождать keepalive интервал? Завтра проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 22:22 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Сетевое соединение не разрывается, чтобы клиент мог получить корректное сообщение об ошибке (isc_att_shutdown). Если клиент спит часами, то и сетевого дисконнекта не будет. Поэтому keepalive тут не при чём. Но. Я ещё раз это всё посмотрел - в 2.5 таки не вызывается триггер при отстреле из мониторинга, и при шатдауне БД. А вот в 3 - вызывается. Вроде :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 22:54 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvladА вот в 3 - вызывается. Вроде :)Дошли таки руки проверить, на двушке как ты и говорил триггер не срабатывает. С двушке я потихоньку уползаю, так что это для меня не приоритет. Проверил на трешке(сборка 32924), те же яйца, токмо в профиль. то что должен был подчистить триггер висит в таблице. Шатдаун базы не приводит к срабатываю триггера. По идее, если база в шатдауне коннектам все едино ничего уже не светит, надо дать сработать триггеру, как с удалением коннекта через мон табличку тоже. Если клиент неожиданно для сервера умер, триггер же срабатывает, это я проверил. Таки писать треккеру? Я понимаю, что триггер не панацея, неожиданно умереть может и сам сервер (например сбой по питанию), но все таки, если коннект обрубается штатными средствами сервера, триггер должен работать, иначе какой в нем смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2018, 18:42 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, насколько помню (но могу и путать), явный отстрел коннектов (в отличие от штатного дисконнекта или отвала сети) хотели сделать максимально быстрым. Выполнять при этом триггеры, которые ХЗ что делают, не хотелось. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2018, 20:36 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
dimitrВыполнять при этом триггеры, которые ХЗ что делают, не хотелось.Есть же режим no_db_triggers на коннекте, чтоб кривой триггер на коннект обойти. У то го же shutdown-а тоже есть немного настроек... может их употребить? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2018, 20:48 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Собственно, нелогично, что на коннект есть отключающий триггеры параметр, а на дисконнект нет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 09:39 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, пересмотрел ещё раз 3-ку - там, хоть и менялся код отвечающий за шатдаун\дисконнект, но триггеры на дисконнект всё же не вызываются. Давайте обсудим. Есть несколько причин для дисконнекта: - по просьбе приложения (т.е. штатный дисконнект) - обрыв связи с приожением - удаление коннекта через мониторинг - шатдаун БД, вызванный сисадмином - шатдаун сервера в целом В текущей реализации только синхронный дисконнект (первые два пункта) вызывает срабатывание триггера. Все случаи асинхронного дисконнекта (все остальные случаи) - не вызывают. Для этого есть причина - когда нужно максимально быстро погасить БД (например пропало питание и админ\скрипт экстренно гасит всё подряд), триггеры лучше не вызывать. Кроме того, код дисконнекта не знает причину дисконнекта. Мне кажется разумным вызывать триггеры в таких случаях - удаление коннекта через мониторинг - шатдаун БД, вызванный сисадмином - если он не форсирован Есс-но, это может быть сделано в 4-ке. Бекпорт в 3 не обещается Какие будут мнения ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 10:37 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
WildSeryСобственно, нелогично, что на коннект есть отключающий триггеры параметр, а на дисконнект нет :)Нет такого параметра. Есть другой - он отключает все database триггеры, не только на коннект ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 10:38 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvladМне кажется разумным вызывать триггеры в таких случаях - удаление коннекта через мониторинг как по мне этот вариант спорный. Удаление коннекта через мониторинг может рассматриваться админом как экстренная мера, требующая как можно более быстрого дисконнекта. Кмк тут нужно давать право выбора. В случае шатдауна всё понятно, как минимум админ может уточнять какой именно шатдаун он хочет ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 10:47 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Симонов ДенисУдаление коннекта через мониторинг может рассматриваться админом как экстренная мера, требующая как можно более быстрого дисконнекта. Кмк тут нужно давать право выбора.Каким образом ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 10:48 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvlad, может быть указывать через контекстные переменные или через изменение окружения оператором типа SET MON_CONN_MODE <mode> И сделать так чтобы этот оператор срабатывал вне транзакции как это сделано например для управления тайм-аутами P.S. Нормальное имя переменной не приходит в голову ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 10:52 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvladWildSeryСобственно, нелогично, что на коннект есть отключающий триггеры параметр, а на дисконнект нет :)Нет такого параметра. Есть другой - он отключает все database триггеры, не только на коннектЯ потому смайлик и поставил. На самом деле, "экстренное выключение" выполняется специально написанным батником, который сперва выполняет короткие "завершающие" SQL-операции (и здесь же можно написать выключение триггера на дисконнект, если бы он был), а уже затем тушит базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 11:02 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
WildSery, я бы хотел что бы как можно больше операций было доступно через SQL. Например, было бы неплохо чтобы через SQL можно было делать и shutdown, только если он не full. Сделал shutdown, накатил изменения, вернул БД в онлайн и всё это в одном SQL скрипте без прыжков между различными инструментами. Я уже предлагал такое http://www.sql.ru/forum/1103091/shutdown-online-iz-skripta ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 11:11 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvladДавайте обсудим. Есть несколько причин для дисконнекта: - по просьбе приложения (т.е. штатный дисконнект) - обрыв связи с приожением - удаление коннекта через мониторинг - шатдаун БД, вызванный сисадмином - шатдаун сервера в целомпервые 2 реализованы, вопросов к ним у меня нет. 3. если бы можно было навесить свои триггеры на системные таблицы и они спокойно(штатно) переживали бы бэкап-рестор, то вопроса бы не возникло. 4. доп параметр шатдауна тоже снимет все вопросы. 5. у меня нет тут явного решения. Как вариант разделить триггеры на бефор и афтер коннект/дисконнект и исполнять какие-нибудь одни. И пусть программист решает, что важнее быстро погаснуть или исполнить весь сценарий дисконнекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 12:40 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, 3. Нет смысла говорить о несуществующем :) 4. Да, у меня тоже была такая идея. 5. Тут типичный конфликт интересов программиста и администратора: первый хочет меньше кодировать, второй хочет чтобы всё "летало и не падало" ("само", есс-но). Шатдаун сервера в эктренной ситуации за минимально возможное время - это всё же ответственность не программиста, так что я тебя тут не подержу - не должен программист решать что важнее в данном случае. И - да - это означает, что он (программист) должен уметь обрабатывать такие ситуации (есс-но, когда всё снова поднимется в штатном режиме) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 12:47 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
У шатдауна же был параметр "время" (или только в режиме force - не помню). Недостаточно просто дать триггерам выполниться за это время, а кто не успел - их проблемы? Потому что если вводить доп.параметр, то могут появиться проблемы с "не-шатдауном" из-за выполняющихся триггеров. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 12:52 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, это время ожидания добровольного дисконнекта других. Если они не успеют -шатдаун отменяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 13:21 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvlad3. Нет смысла говорить о несуществующем :)Как фичреквест для четверки? Тем более это идея возникла не у меня, тут в форуме уже были "пионэры", которые делали нечто подобное, правда жаловались, что оно не "тово". Да по идее логично дать триггеру сработать при удалении через монатачмент. Мне лично это доставило минимум проблем, у меня есть гуевая "отключалка", я туда впендюрил еще один запрос с логикой из триггера на дисконнект и вопрос для себя решил. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 13:35 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyДа по идее логично дать триггеру сработать при удалении через монатачмент. не всегда. Как минимум два варианта: считать что ситуация со срубанием через мониторинг нормальная и триггер должен отработать, или это срубание вызвано какой-то экстренной ситуацией и триггер срабатывать не должен. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 14:05 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, что-то я тебя потерял, ты о чём сейчас ? О триггерах на таблицы мониторинга ? Их нет и не будет. Как нет и самых событий insert\update\delete для этих псевдо-таблиц. Или всё же о триггере на дисконнект ? Это как раз обсуждается. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 14:07 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Симонов ДенисКак минимум два варианта: считать что ситуация со срубанием через мониторинг нормальная и триггер должен отработать, или это срубание вызвано какой-то экстренной ситуацией и триггер срабатывать не должен. Если к базе ещё удаётся послать запрос на удаление из таблицы, то ситуация совсем не экстренная. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 14:09 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а если некий ССЗБ напишет в on disconnect бесконечный цикл? Не намеренно, просто случайно вышло. Сейчас если там зависон можно сделать delete from mon$attachments и вуаля коннект срублен. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 14:32 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvladИли всё же о триггере на дисконнект ?О дисконнекте, хочется чтобы он вел себя логично и задокументировано. Мониторинговые таблицы тут "сбоку", нет у них событий, ну и ладно. Симонов Денисэто срубание вызвано какой-то экстренной ситуацией и триггер срабатывать не должен.Присоединюсь в ДСу, сделал запрос, получил идентификаторы коннектов, какая тут эктренность? Было бы логично иметь логику дисконнекта в одном месте, а не размазывать ее по всей БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 14:34 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Симонов Дениса если некий ССЗБ напишет в on disconnect бесконечный цикл?Если SYSDBA стреляет себе с ногу, то сервер должен принудительно отнять у него логин? Если разработчик напишет бесконечный цикл на инсерте в базу и наинсертит пока место на диске не кончится? Что толку в пустом флуде? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 14:37 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvlad> Если они не успеют -шатдаун отменяется. А, сорри, я уже подзабыл... Умолкаю. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 14:43 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, это смотря как рассматривать возможность delete from mon$attachments. Лично я рассматриваю это как вырубание коннектов для нештатных ситуаций, в том числе и вырубание SYSDBA. Ivan_PisarevskyЕсли разработчик напишет бесконечный цикл на инсерте в базу и наинсертит пока место на диске не кончится? в данном случае delete from mon$attachments способен просто вырубить коннект делающий эту гадость. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 15:09 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Симонов Денис, ... и запустить ту, что в триггере на дисконнект ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 18:06 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
WildSery, сейчас триггер на дисконнект не запускается. Вы за то чтобы он срабатывал после delete from mon$attachments Причём всегда. А я считаю что нужно право выбора запускать или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 18:12 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Симонов ДенисА я считаю что нужно право выбора запускать или нет.Триггер на мон табличку не навесить, см. выше. Где должен поселиться мифический выбор? Если разработчик настолько туп, что запустил бесконечный цикл на рабочей БД, то чем тут поможет сервер? Пусть тестирует тщательнее на "кошках". А аварийно остановить тестовый сервер дело плевое. Рестартанул сервер целиком и правь свои кривульки в новом коннекте. Я не пойму такой трепетной заботы о криворуком разрабе именно в этом контексте? Почему бы не запретить джойны? можно же заставить сервер набирать "бесконечный" резалтсет, "уронив" при этом сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 18:20 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
hvladМне кажется разумным вызывать триггеры в таких случаях - удаление коннекта через мониторинг - шатдаун БД, вызванный сисадмином - если он не форсирован Какие будут мнения ? Согласен с этим. Но хотелось бы оставить возможность удаления коннекта без вызова триггера на отключение. Например, так: ALTER USER 'PETROV' DELETE ATTATCHMENTS; Либо через другую таблицу, которая содержит минимум информации - ID и имя пользователя, например. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 10:45 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
CyberMaxЛибо через другую таблицу, которая содержит минимум информации - ID и имя пользователя, например.Эта логика совершенно штатно делается прямо сейчас, делай триггер в нем ссылка на таблицу, если там сидит юзер то выйти из триггера без действий, инсертить в таблицу до маневров нет никакой проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 11:47 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyПрисоединюсь в ДСу, сделал запрос, получил идентификаторы коннектов, какая тут эктренность? а если не получал ? Код: sql 1.
или Код: sql 1.
с точки хрения движка во время процедуры delete над конкретной строкой-коннектом нет разницы, была ли где-то раньше сложная медленная логика или нет? PS. Кстати, если предположить, что я примерно представляю как долго "подчищает хвосты" какой коннект, то может появиться смысл срубать их отсортировать и сначала убивать самые долгие, а под конец - самые быстрые. Это так, к тезису, что в экстренной ситуации не будет предварительных запросов. Если "ток кончится" через долю секунды - то надо просто убивать сервер вместе с незаписанными на диск кэшами. А если у нас есть несколько секунд на сброс кэшей, то уж на предварительный "сделал запрос, получил идентификаторы коннектов" тем более доля секунды найдется. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 18:00 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Симонов Денисможет быть указывать через контекстные переменные или через изменение окружения оператором типа SET MON_CONN_MODE <mode> тогда уж добавить в mon$attachment изменяемый столбец mon$db_triggers_enabled:boolean и update его в любую сторону перед delete ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 18:03 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ariochизменяемый столбец mon$db_triggers_enabledКак-то криво. Меня тут посетила мысль, если нет триггеров на mon$attachment, то updatable view на нее навесить по идее можно, надо проверить только как она переживет b/r, и в триггер on delete прописать еще и свою логику, помимо удаления собственно записи из самой мон таблички. Далее все манипуляции производить над вьюхой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 11:20 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, должна пережить. ХП которые используют mon$ ведь переживают ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 11:22 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, ты забыл пункт 4 - уборщица случайно зацепила шваброй Ethernet патч-корд и произвела хардовый дисконнект. :) По правде сказать, мне тоже не понятна такая избирательность FirebirdSQL сервера в отношении разных вариантов дисконнекта... Это, как минимум, неунифицировано! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 11:41 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
rdb_devты забыл пункт 4 - уборщица случайно зацепила шваброй Ethernet патч-корд и произвела хардовый дисконнект. :)Выше это уже обсудили, перетерли, все там нормально. И убиение клиента таск менеджером тоже. Давай по теме, хватит партизанить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 11:45 |
|
Триггер на дисконнект. когда должен сработать?
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyAriochизменяемый столбец mon$db_triggers_enabledКак-то криво. криво потому, что нет реализации изменяемых mon-таблиц. пока из них - принципиально, не в каждой таблице, а на уровне заложенного механизма - можно читать и удалять отдельные строки. реализации же изменения конкретного столбца в конкретной строке нет вообще. и городить её из-за одного единственного случая, разумеется, не хочется. но как раз концептуально это IMHO наиболее чистый вариант остальное же сведется к хаотичному набору одноразовых (ad hoc) решений ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2018, 13:46 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561153]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 163ms |
0 / 0 |