powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
25 сообщений из 270, страница 6 из 11
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426863
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

не я имею ввиду что на уровне подключений тогда лишний. Раз мы задаём длительность на уровне транзакций.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426868
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad3. Есс-но, обломанный запрос вернёт isc_cancelled (или какой-нить
isc_query_timeout).
Обломанный аттач\тр-ция венут ошибку при попытке с ними работать.
Обычный способ работы с ошибками в транзакции это
[src Delphi]StartTransaction
try
...
Commit;
except
Rollback;
raise;
end;[/quot]
Я очень сильно надеюсь , что никому не придёт в голову возвращать ошибку из
isc_rollback_transaction() при попытке отката уже убитой транзакции.

PS: Тех чудаков, которые ставят Commit в finally (привет, IBSurgeon) мне искренне не жаль.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426885
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

сходу не могу придумать аргументов. Так что звучит разумно.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426907
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПо третьему - возможно надо получать подтверждение из клиента, т.е. обработать как-то чтобы транзакция или запрос при желании могли быть продолжены. Если конечно он не на разрыв коннектаЕсли инициатор отмены - клиент, то, технически, можно сделать колбеки до и после отмены.
Симонов ДенисХотя возможно это уже переборВот-вот :)

Если же отмена возникает на сервере, то я не думаю, что он должен консультироваться с клиентом.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426912
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЯ очень сильно надеюсь, что никому не придёт в голову возвращать
ошибку из isc_rollback_transaction() при попытке отката уже убитой транзакции.
И, кстати: использовать bad_trans_handle в качестве ошибки, возвращаемой при попытке
использования убитой транзакции - тоже плохая идея.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426915
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЯ очень сильно надеюсь , что никому не придёт в голову возвращать ошибку из
isc_rollback_transaction() при попытке отката уже убитой транзакции.А почему, собственно ты так сильно на это надеешься ?
Как по мне, тут самое место ошибке isc_bad_tra_handle (ну или isc_cancelled, если это будет возможно).
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426928
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА почему, собственно ты так сильно на это надеешься ?
Потому что в документации по IB API недвусмысленно написано "isc_rollback_transaction()
никогда не обламывается и гарантированно завершает транзакцию". И это правильно (в чём я
имел возможность убедиться на обратном примере с ODBC).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426942
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot hvlad]Симонов Денисэто мы таким образом приходим что таймаут можно выставить в трёх местах
- на базу данных (database.conf)
- при подключении
- при старте транзакцииНе забываем, что самих таймаутов тоже предлагается (пока ещё) несколько видов.
[quot]

для разрыва коннекта можно указывать в 1 и 2
для отмены транзакции в 1 и 3
для отмены оператора 1 и ?

hvladСимонов ДенисКстати может ли потребоваться установить лимит на автономную транзакцию?Конечно может. Думаю этот вопрос будет решён так:
- значение по умолчанию
- значение из родительской тр-ции
- если введём полный синтаксис св-в тр-ции для автономок, то там и таймаут можно будет задать тоже

как по мне так нужны все варианты. Из родительской если явно ничего не указано. Первый вариант если только явно описан в синтаксисе (timeout default)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426949
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladDarkMasterНе, ну зачем передергивать?Веришь - я не передёргиваю, я пишу так, как я тебя понимаю.
Вот скажи - чем тебе вредят таймауты, отключенные по умолчанию ? Чем ?

DarkMasterЛюбые подвижки в данных/индексах или в железе - и опять придется пересматривать, что и где поплыло.Ну так при чём тут таймауты ? Поплыть может и без них :)

Мне отключенные таймауты не мешают. Меня смущает необходимость обязательных телодвижений при штатном замедлении запроса.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426953
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

таймауты отключены - никаких телодвижений
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426961
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПотому что в документации по IB API недвусмысленно написано "isc_rollback_transaction()
никогда не обламывается и гарантированно завершает транзакцию". И это правильноЯ не говорю, что это не правильно.
Я хочу аргументов, а не бла-бла вроде:Dimitry Sibiryakovв чём я имел возможность убедиться на обратном примере с ODBC
Ибо завтра ты будешь утверждать обратное, а у меня не будет аргументов :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426979
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ хочу аргументов
Каких аргументов ты хочешь? У приложения есть два способа завершить транзакцию:
isc_commit_transaction() и isc_rollback_transaction(). Третьего не дано, а значит хотя бы
один из этих способов должен работать вне зависимости от текущего состояния транзакции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38426994
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

и какие проблемы влечёт за собой isc_bad_trans при попытке сделать роллбек несуществующей тр-ции ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427032
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladкакие проблемы влечёт за собой isc_bad_trans при попытке сделать роллбек
несуществующей тр-ции ?
Сначала возникает недоумение: "и что мне теперь делать", ответом на которое служит "да и
забить на эту ошибку". Что, собственно, и равноценно вообще отсутствию ошибки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427039
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСначала возникает недоумение: "и что мне теперь делать"Обнулить своё хендл тр-ции и отпустить связанные с ней ресурсы.
Dimitry SibiryakovЧто, собственно, и равноценно вообще отсутствию ошибки.Тебе равноценно - игнорируй её. Но не заставляй других делать каку...

Dimitry SibiryakovЯ очень сильно надеюсь , что никому не придёт в голову возвращать ошибку из
isc_rollback_transaction() при попытке отката уже убитой транзакции.Ну как, прошло ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427054
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladОбнулить своё хендл тр-ции и отпустить связанные с ней ресурсы.

Угу, это при ошибке. А что делать в случае отсутствия этой ошибки? Сэкономлю время,
поскольку ответ будет "обнулить своё хендл тр-ции и отпустить связанные с ней ресурсы".
Так в чём фишка?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427097
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТак в чём фишка?В том, что нельзя прятать ошибки\события от пользователя.
Если тебе по барабану, от чего и как закрылась твоя тр-ция, то есть другие люди, которые (моют руки) реагируют на ошибки.

Конструктив есть, или ты опять упёрся ?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427110
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВ том, что нельзя прятать ошибки\события от пользователя.

Эта ошибка/событие произошло не здесь. Поведение Rollback в данном случае уже будет
"снежный ком", который как раз обычно и прячет ошибки от пользователя. В вышеприведённом
коде если обработать ошибку и выкинуть исключение из Rollback, оно перекроет оригинальный
eхception и пользователь уже никогда не узнает что там было. Если ты никогда на эти грабли
не наступал, то... уж не знаю - завидовать или сочувствовать.

hvladКонструктив есть, или ты опять упёрся ?
Я высказал своё мнение "rollback не должен возвращать ошибок". Оно отлично от твоего. Что
ты посчитаешь в данном случае "конструктивом"? Что я изменю своё мнение? Или приведу ещё
десяток граблей на которые наступал в дополнение к уже названным?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427134
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с
базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы
собираетесь пихать ошибку таймаута? Подождёте следующего обращения к базе? Которым может
быть как раз дисконнект?..

Чуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там
себе делает. К базе опять же не обращается . Собираетесь ему обломать всю
малину или только первичный коннект?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427140
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с
базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы
собираетесь пихать ошибку таймаута? Подождёте следующего обращения к базе? Которым может
быть как раз дисконнект?..

Чуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там
себе делает. К базе опять же не обращается . Собираетесь ему обломать всю
малину или только первичный коннект?

конечно при обращении когда же ещё. А как сейчас делается при отмене оператора или срубании коннекта через таблицы мониторинга? В чём проблема?
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427142
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВ вышеприведённом
коде если обработать ошибку и выкинуть исключение из RollbackТ.е. ты озаботился вод таким вот кодом (с IBX\FIB+\etc)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
try
  ...
  Commit;
except
  Rolback;
  raise;
end;

Да ?

1. Этот код изначально не полон, т.к., тут не определена реакция на исключение в Rollback.
Например, IBTransaction.Rolback может вызвать исключение даже до самого роллбека, ибо он вызывает кучу пользовательских событий (BeforeTransactionEnd).
Но даже если мы забьём на вышесказанное и поклянёмся никода не кидать исключения в BeforeTransactionEnd, то

2. Кто заставляет метод Rollback высокоуровневой (!) компоненты кидать исключение при обнаружении isc_bad_trans, а не обработать его более цивилизованно ?

В моей очень старой копии IBDatabase.pas, например, есть обработка ошибки isc_network_error с вызовом DefaultDatabase.ForceClose (я уже сам успел забыть об этом и немало удивился, когда это сейчас обнаружил)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427150
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с
базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы
собираетесь пихать ошибку таймаута?Коннект разорвётся по истечении таймаута. А вот приложение узнает об этом
- при попытке что-то сделать в коннекте
- если мы сделаем спец. колбек и приложение зарегистрирует его обрабтчик - то сразу


Dimitry SibiryakovЧуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там
себе делает. К базе опять же не обращается . Собираетесь ему обломать всю
малину или только первичный коннект?Это можно обсудить.
Сходу - я бы не стал для обрубать коннект во время ожидания ивентов.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427151
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в какой-то степени я согласен с камрадом Сибиряковым. Ибо у нас уже есть асинхронный обрыв коннекта, через мониторинг. В результате которого клиент для всех операций с данным хендлом получает isc_att_shutdown, кроме дисконнекта, который проходит без ошибок. Я это делал сознательно, ибо так оно казалось правильным. Не вижу принципиальной разницы для транзакций, кроме нюансов реализации.
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427159
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

одно дело категорично кричать что нужно сделать только так и никак иначе, а другое обсуждать с аргументированием своей позиции (что камрад Сибиряков начал делать со скрипом и только из-под палки :)
...
Рейтинг: 0 / 0
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
    #38427185
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

он таки поддается дрессировке!
...
Рейтинг: 0 / 0
25 сообщений из 270, страница 6 из 11
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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