Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поведение Wait транзакции Firebird / 3 сообщений из 3, страница 1 из 1
28.12.2018, 22:27
    #39754732
vladgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поведение Wait транзакции Firebird
Здравствуйте!

Подскажите в чем может быть дело
Firebird 2.5.8
Delphi XE / FIBPLUS


Создаю транзакцию с параметрами
Код: sql
1.
2.
3.
write
wait
read_commited



Код: plsql
1.
2.
Timeout=7
TimeoutAction - Rollback


Прохожу код отладчиком. Перед стартом транзакции подключаюсь IBExpert`ом к базе и начинаю специально редактировать запись в таблице.
В процедуре делаю Insert () Select и это дело зависает.

Ожидаю, что зависнет на 7 секунд затем будет вызвано исключение.
Однако этого не происходит и все подвисает до тех пор, пока не закрою транзакцию в IBExpert потом все продолжается штатно.
1. Почему вообще зависает на Insert () Select. Думал должна добавить запись в "прошлом" виде до не закомитченных изменений.
2. Если все же зависла, почему не вызывается исключение через время Timeout

если ставлю параметры транзакции для "вИдения" только тех данных, которые были на момент старта транзакции
Код: sql
1.
2.
3.
write
wait 
concurrency


То Insert () select проходит без проблем
и ожидаемо мной "зависает" на попытке UPDATE обновить запись в таблице, которую "держит" IbExpert.
Но здесь также, вопрос почему не срабатывает timeout.
Как только закрываю транзакцию получаю исключение Update conflicts. Предполагаю, что из-за того что транзакция concurrency и данные которые хотел обновить "устарели" и из обновлять нельзя. Правильно ли это понимаю?
Что можно сделать с timeout?
...
Рейтинг: 0 / 0
28.12.2018, 22:46
    #39754737
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поведение Wait транзакции Firebird
vladgul,

охохо...

1. insert into select да, зависал до ФБ 3, потому что селект видел сделанные инсерты, происходил зацикл. В ФБ 3 уже все ок.
2. Когда на сервере зависло, значит клиентская часть ничего не может отправить серверу, хоть там трижды будет
таймаут.
3. клиентский таймаут - исключительно клиентский. Если сервер повис на Wait-конфликте, то клиент тоже висит, и таймауты у него не работают. А даже если и сработают, то будут висеть до "отлипания" серверного wait.
...
Рейтинг: 0 / 0
28.12.2018, 23:05
    #39754740
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поведение Wait транзакции Firebird
vladgulСоздаю транзакцию с параметрами

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


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