|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
afgm, не я имею ввиду что на уровне подключений тогда лишний. Раз мы задаём длительность на уровне транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 16:19 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 16:23 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Симонов Денис, сходу не могу придумать аргументов. Так что звучит разумно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 16:30 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Симонов ДенисПо третьему - возможно надо получать подтверждение из клиента, т.е. обработать как-то чтобы транзакция или запрос при желании могли быть продолжены. Если конечно он не на разрыв коннектаЕсли инициатор отмены - клиент, то, технически, можно сделать колбеки до и после отмены. Симонов ДенисХотя возможно это уже переборВот-вот :) Если же отмена возникает на сервере, то я не думаю, что он должен консультироваться с клиентом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 16:40 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЯ очень сильно надеюсь, что никому не придёт в голову возвращать ошибку из isc_rollback_transaction() при попытке отката уже убитой транзакции. И, кстати: использовать bad_trans_handle в качестве ошибки, возвращаемой при попытке использования убитой транзакции - тоже плохая идея. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 16:41 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЯ очень сильно надеюсь , что никому не придёт в голову возвращать ошибку из isc_rollback_transaction() при попытке отката уже убитой транзакции.А почему, собственно ты так сильно на это надеешься ? Как по мне, тут самое место ошибке isc_bad_tra_handle (ну или isc_cancelled, если это будет возможно). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 16:42 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladА почему, собственно ты так сильно на это надеешься ? Потому что в документации по IB API недвусмысленно написано "isc_rollback_transaction() никогда не обламывается и гарантированно завершает транзакцию". И это правильно (в чём я имел возможность убедиться на обратном примере с ODBC). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 16:48 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
[quot hvlad]Симонов Денисэто мы таким образом приходим что таймаут можно выставить в трёх местах - на базу данных (database.conf) - при подключении - при старте транзакцииНе забываем, что самих таймаутов тоже предлагается (пока ещё) несколько видов. [quot] для разрыва коннекта можно указывать в 1 и 2 для отмены транзакции в 1 и 3 для отмены оператора 1 и ? hvladСимонов ДенисКстати может ли потребоваться установить лимит на автономную транзакцию?Конечно может. Думаю этот вопрос будет решён так: - значение по умолчанию - значение из родительской тр-ции - если введём полный синтаксис св-в тр-ции для автономок, то там и таймаут можно будет задать тоже как по мне так нужны все варианты. Из родительской если явно ничего не указано. Первый вариант если только явно описан в синтаксисе (timeout default) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 16:59 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladDarkMasterНе, ну зачем передергивать?Веришь - я не передёргиваю, я пишу так, как я тебя понимаю. Вот скажи - чем тебе вредят таймауты, отключенные по умолчанию ? Чем ? DarkMasterЛюбые подвижки в данных/индексах или в железе - и опять придется пересматривать, что и где поплыло.Ну так при чём тут таймауты ? Поплыть может и без них :) Мне отключенные таймауты не мешают. Меня смущает необходимость обязательных телодвижений при штатном замедлении запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 17:05 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
DarkMaster, таймауты отключены - никаких телодвижений ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 17:06 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПотому что в документации по IB API недвусмысленно написано "isc_rollback_transaction() никогда не обламывается и гарантированно завершает транзакцию". И это правильноЯ не говорю, что это не правильно. Я хочу аргументов, а не бла-бла вроде:Dimitry Sibiryakovв чём я имел возможность убедиться на обратном примере с ODBC Ибо завтра ты будешь утверждать обратное, а у меня не будет аргументов :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 17:10 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladЯ хочу аргументов Каких аргументов ты хочешь? У приложения есть два способа завершить транзакцию: isc_commit_transaction() и isc_rollback_transaction(). Третьего не дано, а значит хотя бы один из этих способов должен работать вне зависимости от текущего состояния транзакции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 17:20 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, и какие проблемы влечёт за собой isc_bad_trans при попытке сделать роллбек несуществующей тр-ции ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 17:28 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladкакие проблемы влечёт за собой isc_bad_trans при попытке сделать роллбек несуществующей тр-ции ? Сначала возникает недоумение: "и что мне теперь делать", ответом на которое служит "да и забить на эту ошибку". Что, собственно, и равноценно вообще отсутствию ошибки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 17:45 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСначала возникает недоумение: "и что мне теперь делать"Обнулить своё хендл тр-ции и отпустить связанные с ней ресурсы. Dimitry SibiryakovЧто, собственно, и равноценно вообще отсутствию ошибки.Тебе равноценно - игнорируй её. Но не заставляй других делать каку... Dimitry SibiryakovЯ очень сильно надеюсь , что никому не придёт в голову возвращать ошибку из isc_rollback_transaction() при попытке отката уже убитой транзакции.Ну как, прошло ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 17:49 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladОбнулить своё хендл тр-ции и отпустить связанные с ней ресурсы. Угу, это при ошибке. А что делать в случае отсутствия этой ошибки? Сэкономлю время, поскольку ответ будет "обнулить своё хендл тр-ции и отпустить связанные с ней ресурсы". Так в чём фишка? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 17:55 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТак в чём фишка?В том, что нельзя прятать ошибки\события от пользователя. Если тебе по барабану, от чего и как закрылась твоя тр-ция, то есть другие люди, которые (моют руки) реагируют на ошибки. Конструктив есть, или ты опять упёрся ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 18:25 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
hvladВ том, что нельзя прятать ошибки\события от пользователя. Эта ошибка/событие произошло не здесь. Поведение Rollback в данном случае уже будет "снежный ком", который как раз обычно и прячет ошибки от пользователя. В вышеприведённом коде если обработать ошибку и выкинуть исключение из Rollback, оно перекроет оригинальный eхception и пользователь уже никогда не узнает что там было. Если ты никогда на эти грабли не наступал, то... уж не знаю - завидовать или сочувствовать. hvladКонструктив есть, или ты опять упёрся ? Я высказал своё мнение "rollback не должен возвращать ошибок". Оно отлично от твоего. Что ты посчитаешь в данном случае "конструктивом"? Что я изменю своё мнение? Или приведу ещё десяток граблей на которые наступал в дополнение к уже названным? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 18:33 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Да, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы собираетесь пихать ошибку таймаута? Подождёте следующего обращения к базе? Которым может быть как раз дисконнект?.. Чуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там себе делает. К базе опять же не обращается . Собираетесь ему обломать всю малину или только первичный коннект? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 18:53 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДа, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы собираетесь пихать ошибку таймаута? Подождёте следующего обращения к базе? Которым может быть как раз дисконнект?.. Чуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там себе делает. К базе опять же не обращается . Собираетесь ему обломать всю малину или только первичный коннект? конечно при обращении когда же ещё. А как сейчас делается при отмене оператора или срубании коннекта через таблицы мониторинга? В чём проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 18:58 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВ вышеприведённом коде если обработать ошибку и выкинуть исключение из RollbackТ.е. ты озаботился вод таким вот кодом (с IBX\FIB+\etc) Код: pascal 1. 2. 3. 4. 5. 6. 7.
Да ? 1. Этот код изначально не полон, т.к., тут не определена реакция на исключение в Rollback. Например, IBTransaction.Rolback может вызвать исключение даже до самого роллбека, ибо он вызывает кучу пользовательских событий (BeforeTransactionEnd). Но даже если мы забьём на вышесказанное и поклянёмся никода не кидать исключения в BeforeTransactionEnd, то 2. Кто заставляет метод Rollback высокоуровневой (!) компоненты кидать исключение при обнаружении isc_bad_trans, а не обработать его более цивилизованно ? В моей очень старой копии IBDatabase.pas, например, есть обработка ошибки isc_network_error с вызовом DefaultDatabase.ForceClose (я уже сам успел забыть об этом и немало удивился, когда это сейчас обнаружил) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 19:00 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДа, и кстати о таймаутах на транзакцию и коннект: вот есть приложение, оно соединилось с базой и что-то там себе делает. К базе не обращается . Вообще. В какое место вы собираетесь пихать ошибку таймаута?Коннект разорвётся по истечении таймаута. А вот приложение узнает об этом - при попытке что-то сделать в коннекте - если мы сделаем спец. колбек и приложение зарегистрирует его обрабтчик - то сразу Dimitry SibiryakovЧуть посложнее задача: приложение соединилось с базой, подписалось на события и что-то там себе делает. К базе опять же не обращается . Собираетесь ему обломать всю малину или только первичный коннект?Это можно обсудить. Сходу - я бы не стал для обрубать коннект во время ожидания ивентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 19:04 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
в какой-то степени я согласен с камрадом Сибиряковым. Ибо у нас уже есть асинхронный обрыв коннекта, через мониторинг. В результате которого клиент для всех операций с данным хендлом получает isc_att_shutdown, кроме дисконнекта, который проходит без ошибок. Я это делал сознательно, ибо так оно казалось правильным. Не вижу принципиальной разницы для транзакций, кроме нюансов реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 19:04 |
|
MON$STATEMENTS почему NULL-ы (Обсуждаем серверные таймауты)
|
|||
---|---|---|---|
#18+
dimitr, одно дело категорично кричать что нужно сделать только так и никак иначе, а другое обсуждать с аргументированием своей позиции (что камрад Сибиряков начал делать со скрипом и только из-под палки :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 19:06 |
|
|
start [/forum/topic.php?fid=40&startmsg=38426863&tid=1561806]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 161ms |
0 / 0 |