IBE 2012.03.22: невозможно переконнектиться, если его соед-ние было снято через mon$attach

Таблоид
Дата: 12.05.2012 12:28:41
hi all

(прошу не пинать, выхода в NNTP отсюда у мну нет; надеюсь, Александр прочитает этот топик)

Имеется сравнительно новый (март 2012) IBE.
В нём стартовала RW-транзакция, про которую забыли. Через некоторое время этот коннект срубается (кроном) по delete from mon$attach.
ИБЭ после этого переходит в состояние "зацикливания": попытка вызвать переконнект к базе, или дисконнект от неё, всё время пресекается появлением окна с сообщениями:

select RDB$RELATION_NAME from RDB$RELATIONS
where (RDB$RELATION_NAME = 'MON$ATTACHMENTS') and
(RDB$VIEW_BLR is NULL)
------------------------------------------------------
Unsuccessful execution caused by a system error that
precludes successful execution of subsequent statements.
connection shutdown.

Окно модальное. Внизу справа в этом окошке - кнопка "Close". При тычке по ней всё повторяется заново - любая попытка отсоединиться от базы вызывает это же окно. Приходится срубать через taskMgr.
Раньше такого точно не было - ЕМНИП, при разрыве соединения ИБЭ сам закрывал все окна для соотв-щей базы и можно было спокойно выполнить к ней новый коннект.
olegenty
Дата: 12.05.2012 15:18:53
На IBE 2012.04.18 тоже воспроизводится?
Таблоид
Дата: 12.05.2012 15:57:31
olegenty,

только что скачал 2012.05.04 - всё то же самое.
Открыл в нём базу, ввёл какой-то селект, коммит/роллбак после этого НЕ нажимал.
Затем определил его mon$attachment_id и грохнул его в mon$attachments.

ИБЭ после этого в ответ на выбор пункта "Disconnect", либо на попытку закрыть его окно "крестиком", вопрошает про commit/rollback.
А затем, чтобы ни ответили ему, всё время вываливает окно с тем же самым сообщением:
Alex Truhin
Дата: 13.05.2012 22:33:52
Таблоид,
ну IBE практически во всех окнах, печально реагирует на обрыв соединения. Как то помнится Хвастунов сказал, что исправить это очень проблематично, и пока на очереди не стоит. Было это несколько лет назад, может что и изменилось.
oleg_m
Дата: 13.05.2012 22:40:22
Alex Truhin, ну не скажи. За несколько лет ситуация существенно улучшилась: я постоянно отстреливаю протухшие коннекты IBE к боевому серверу.
Если раньше (5-6 лет назад) в 100% случаев приходилось просто убивать IBE из TaskManager, то сейчас это приходится делать значительно реже.
Александр постепенно вычищает эти ситуации.
Гаджимурадов Рустам
Дата: 13.05.2012 23:11:00

Alex Truhin> Как то помнится Хвастунов сказал, что исправить это очень
Alex Truhin> проблематично, и пока на очереди не стоит. Было это несколько
Alex Truhin> лет назад, может что и изменилось.

Угу, так точно. Году эдак в 2010... я помню, сам как раз возмущался, IIRC.

Posted via ActualForum NNTP Server 1.5

Гаджимурадов Рустам
Дата: 13.05.2012 23:12:31

oleg_m> Александр постепенно вычищает эти ситуации.

Есть подозрение, что именно это он особо не трогал. :)
Впрочем, появится, сам расскажет, как дела обстоят.

P.S. Это, кстати, от версии сервера тоже зависит, кажется.

Posted via ActualForum NNTP Server 1.5

IBExpert
Дата: 14.05.2012 07:51:35
У меня не воспроизводится. Пробую так:
1. Стартую два эксперта.
2. Открываю в обоих одну и ту же базу.
3. В первом эксперте убиваю коннект второго через Tools | Database Monitoring
4. Во втором эксперте пытаюсь сделать дисконнект, получаю error reading data from the connection и эксперт принудительно все закрывает.
Таблоид
Дата: 14.05.2012 09:26:56
session #1
Открыл IBE от 2012.05.12, создал в нём "ярлык" к базе C:\1INSTALL\FIREBIRD\Data\TMAIN.FDB, указав server name = localhost/3050 (т.е. коннект через TCP, а не по XNET).
Далее открыл SQL Editor и запустил в нём select * from some_table, без commit'a

session #2
C:\1INSTALL\FIREBIRD\Data>isql localhost/3050:C:\1INSTALL\FIREBIRD\Data\TMAIN.FDB
Database: localhost/3050:C:\1INSTALL\FIREBIRD\Data\TMAIN.FDB
SQL> set list on;
SQL> select * from mon$attachments;

MON$ATTACHMENT_ID 34
MON$SERVER_PID 580
MON$STATE 1
MON$ATTACHMENT_NAME C:\1INSTALL\FIREBIRD\DATA\TMAIN.FDB
MON$USER SYSDBA

MON$ROLE NONE

MON$REMOTE_PROTOCOL TCPv4
MON$REMOTE_ADDRESS 127.0.0.1
MON$REMOTE_PID 1408
MON$CHARACTER_SET_ID 0
MON$TIMESTAMP 2012-05-14 09:21:08.9840
MON$GARBAGE_COLLECTION 1
MON$REMOTE_PROCESS C:\1INSTALL\FIREBIRD\FB_2_5\bin\isql.exe
MON$STAT_ID 2

MON$ATTACHMENT_ID 33
MON$SERVER_PID 580
MON$STATE 1
MON$ATTACHMENT_NAME C:\1INSTALL\FIREBIRD\DATA\TMAIN.FDB
MON$USER SYSDBA

MON$ROLE NONE

MON$REMOTE_PROTOCOL TCPv4
MON$REMOTE_ADDRESS 127.0.0.1
MON$REMOTE_PID 1112
MON$CHARACTER_SET_ID 52
MON$TIMESTAMP 2012-05-14 09:20:25.6090
MON$GARBAGE_COLLECTION 1
MON$REMOTE_PROCESS C:\1INSTALL\FIREBIRD\IBExpert\IBExpert.exe
MON$STAT_ID 6


SQL> delete from mon$attachments where mon$attachment_id<>current_connection; commit;

session #1
вернулся из grid'a в редактор, попробовал повторить select (F9). Получил, ес-сно, сообщение о разрыве соединения ("Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements. connection shutdown.").
Ткнул правый клик в db_explorer'e на этой базе, там - в "Disconnect". Он спросил, что делать с транзакцией: commit или rollback.
Далее при любом ответе получаю сообщение, которое привёл в стартовом посте.
И затем, как бы не пытаться отсоединиться от этой бедной базы, всё время выскакивает это же окно.
Таблоид
Дата: 14.05.2012 09:29:55
PS. Можно ли в заголовке окна IBE выводить его PID ? когда надо срубать через task mgr, то всегда есть опасность грохнуть "не того" эксперта...