|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
hi all Я столкнулся с чем-то неведомым и таинственно-опасным :-) В узких кругах широко известно, что база security3.fdb может висеть открытой после того, как закроется последний дисконнект, дабы следующий коннект выполнялся быстрее (и это зовётся linger). Дока утверждает, что такое происходит (и имеет смысл) только для арх-ры Super Server . А теперь посмотрим, что там будет в арх-ре Super CLASSIC . Вот конфиг: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Далее, скачиваем: 1) утилиту mtee.exe для дублирования вывода консоли в файл, с возможностью приклеивания к сообщениям таймштампов; 2) утилиту Руссиновича из SysInternals, которая показывает, какие файлы открыты. Она назвается Handle.exe . И создаем вот такой батничек (я ему задал имя = `h4sec3.bat`): Код: plaintext 1. 2. 3. 4. 5.
Делаем рестарт FB 3.0 SC. Запускаем батник - его вывод будет пока что пустым. Затем открываем второе cmd-окошко и вводим там: Код: plaintext
В окне с батником немедленно появятся мессаги: Код: plaintext 1. 2. 3.
-- которые для первого запуска ISQL будут лезть примерно 10 сек: Код: plaintext 1. 2. 3.
Закрываем батник, копируем протокол 'handle.log' в куда-нибудь. Затем повторяем опять: * запускаем батник * запускаем Код: plaintext
Смотрим в окно батника: вроде бы опять файл sec3.fdb был открыт около 10 сек: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
А теперь, почтеннейшая публика, внимание! Повторяем всё еще раз, т.е. делаем ТРЕТИЙ запуск батника и "echo ... | isql ...". И любуемся в окно батника: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
FB, работающий в режиме Super CLASSIC , держал открытым файл security3.fdb примерно 57 секунд! Наблюдение за картинкой в ProcessExplorer'e (см аттач) показало, что: 1) когда к ФБ выполняется коннект, то он открывает (помимо прочего) вот такие три файлика: Код: plaintext 1. 2.
3) если третье и последующие подключения к базе (с немедленным дисконнектом) происходят после <N>, то до истечения <T>, то sec3.fdb будет удерживаться открытым уже не ~9...10 секунд, а почти минуту. Обращаю особое внимание: это происходит на Super CLASSIC 'e. Это было сделано намеренно или сиё есть "какая-то нелепая случайность" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 22:21 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
PS. Для SuperSERVER'a аналогичные манипуляции показывают, что файл sec3.fdb удерживается примерно одинаковое число секунд, что для 1-го, что для 5-го запуска "echo ... | isql ...". Но время это больше 1 минуты, что-то около 67-68 секунд: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Этого я тоже не понимать. Откудова лезут дополнительные 7-8 секунды ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 22:28 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
ТаблоидОткудова лезут дополнительные 7-8 секунды ? Слышь, ты чо такой въедливый? Тебе движок чо, нанимался миллисекунды считать? Секундой туда, секундой сюда, не всё ли пох?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 22:42 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Из-за этих долбаных 60 сек не могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому. А тут выясняется, что и 60 сек мало. Да еще и на SC такая же хрень, как и на SS :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 22:45 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Таблоидне могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому Лично у меня возникает резонный вопрос: а какого ты вообще лезешь через embedded куда угодно, не погасив перед этим нормальный сервер?.. В особенности - в БД безопасности . Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 22:48 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
А его, сервер этот, хрен погасишь из-под тестовой среды fbtest.py :-) Вот и приходится делать через Жо - ждать то бишь, пока "само отвалится" через 60 (якобы) сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 22:55 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Таблоид, зачем оно тебе надо? Тем более с точности до секунды ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 23:54 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
ТаблоидА его, сервер этот, хрен погасишь из-под тестовой среды fbtest.py :-) и нехер. А кому сильно надо, тот перед запуском тестовой среды сбросит лингер у secdb. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 00:16 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
dimitr, или назначит в качестве security другую БД без лингера ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 00:19 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
dimitrкому сильно надо, тот перед запуском тестовой среды сбросит лингер у secdb.Ты про батник, который принудительно меняет некоторые параметры в конфиге перед запуском ФБ-инстанса, или про что-то другое ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 10:10 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Таблоид, про LINGER. Он не гарантирует что БД будет освобождена через указанное кол-во секунд. Потому что там ещё всяческие процессы могут происходить. Он всего лишь указывает что кеш не будет сброшен в течении указанного кол-ва секунд (по крайней мере не меньше этого значения). Ведь даже когда ты без лингера отрубаешься от базы она не освобождается мгновенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 10:35 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
ТаблоидТы про батник, который принудительно меняет некоторые параметры в конфиге перед запуском ФБ-инстанса именно про него, например ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:26 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
dimitrименно про него, например вот только тесты без лингера станут работать еще медленнее :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:27 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Таблоидне могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому.Зачем ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:27 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
hvladТаблоидне могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому.Зачем ? ага и мне то же интересно. Просто я вижу пока один смысл коннетится к security.db через embeded - это для его начальной инициализации. Но повторно то зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:30 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
> зачем Надо сделать тест для проверки CORE-4821. И если я правильно понимаю замечание "Alexander Peshkov added a comment - 01/Jun/15 10:52 AM", роль, которая будет иметь грант на create database, должна быть предварительно создана в embedded-подключении к sec3.fdb. Проблема в том, что fbtest, когда получает аргументом имя некоторого файла (напр., 'core_4821.fbt') в тихаря проводит создание базы с именем %tmp%/core_4821.fbt, после чего подключается к ней по ТСР. След-но, в этот момент времени sec3.fdb будет уже недоступен для embedded-коннекта, попытка вывалит сообщение "файл занят другим процессом". Выкрутиться из этого можно, насколько могу понять, только одним способом: закрыть коннект в fbtest'e, после чего... ждать не менее 70 секунд, чтобы ФБ отцепился от файла 'security.db' ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 12:52 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Таблоид, подключись не ембедедом через TCP, но сначала в конфиге поставь Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:22 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Симонов Дениссначала в конфиге поставьне могу я в этом случае ничего менять в конфиге... он спрятан от мну далеко и навсегда ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:31 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Таблоид, мда... Но раз ты не имеешь доступ к конфигу, тогда не понятно как тестировать баги, которые будут связаны с переназначением security БД. Или когда она сама на себя завязана. А такие баги уже есть см. CORE-4721 хотя наверное сам процесс зависания трудно определить скриптом ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:42 |
|
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
|
|||
---|---|---|---|
#18+
Симонов Денисне понятно как тестировать баги, которые будут связаны с переназначением security БД. Или когда она сама на себя завязана.Это надо, видимо, P.Cisar'я тревожить, чтобы он допилил механизьм... Симонов ДенисА такие баги уже есть см. CORE-4721 Да, я помню, ты мне говорил про это недавно. Симонов Денисхотя наверное сам процесс зависания трудно определить скриптомПочему ? Вспомогательными утилитами типа psList.exe, psKill.exe - запросто. Из-под батника вызываем isql командой start и запускаем psList - периодическую проверку существования процесса этого isql'я. Если через некоторое время этот процесс так и будет торчать в списке, то клияем его psKill'ом. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 14:05 |
|
|
start [/forum/topic.php?fid=40&msg=38981903&tid=1562782]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 284ms |
total: | 432ms |
0 / 0 |