powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
20 сообщений из 20, страница 1 из 1
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981681
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

Я столкнулся с чем-то неведомым и таинственно-опасным :-)

В узких кругах широко известно, что база security3.fdb может висеть открытой после того, как закроется последний дисконнект, дабы следующий коннект выполнялся быстрее (и это зовётся linger). Дока утверждает, что такое происходит (и имеет смысл) только для арх-ры Super Server .

А теперь посмотрим, что там будет в арх-ре Super CLASSIC .
Вот конфиг:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
C:\MIX\firebird\fb30sc>findstr /r /c:"^[^#;]" firebird.conf | sort
AuthClient = Legacy_Auth,Srp,Win_Sspi
AuthServer = Legacy_Auth,Srp
DefaultDbCachePages = 128
FileSystemCacheThreshold = 65536K
LockHashSlots = 22111
MaxUserTraceLogSize = 99999
RemoteServicePort = 3330
 SharedCache = false
SharedDatabase = true 
TempDirectories = c:\temp
UserManager = Legacy_UserManager,Srp
WireCrypt = Disabled

Далее, скачиваем:
1) утилиту mtee.exe для дублирования вывода консоли в файл, с возможностью приклеивания к сообщениям таймштампов;
2) утилиту Руссиновича из SysInternals, которая показывает, какие файлы открыты. Она назвается Handle.exe .
И создаем вот такой батничек (я ему задал имя = `h4sec3.bat`):
Код: plaintext
1.
2.
3.
4.
5.
@echo off
del handle.log 2>nul
:m1
  Handle.exe | findstr /i /c:"security3.fdb" | mtee /t /+ handle.log
  ping -n 2 127.0.0.1>nul
goto m1

Делаем рестарт FB 3.0 SC. Запускаем батник - его вывод будет пока что пустым.

Затем открываем второе cmd-окошко и вводим там:

Код: plaintext
echo select current_timestamp from rdb$database; | C:\MIX\firebird\fb30sc\isql localhost/3330:e30

В окне с батником немедленно появятся мессаги:
Код: plaintext
1.
2.
3.
21:37:47.265   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:37:48.390   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:37:49.530   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
. . .

-- которые для первого запуска ISQL будут лезть примерно 10 сек:
Код: plaintext
1.
2.
3.
. . .
21:37:54.062   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:37:55.202   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:37:56.374   1C4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb

Закрываем батник, копируем протокол 'handle.log' в куда-нибудь.
Затем повторяем опять:
* запускаем батник
* запускаем
Код: plaintext
echo select current_timestamp from rdb$database; | C:\MIX\firebird\fb30sc\isql localhost/3330:e30

Смотрим в окно батника: вроде бы опять файл sec3.fdb был открыт около 10 сек:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
21:38:29.171   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:30.296   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:31.437   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:32.562   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:33.687   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:34.843   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:36.015   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:37.171   1D4: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb

А теперь, почтеннейшая публика, внимание!

Повторяем всё еще раз, т.е. делаем ТРЕТИЙ запуск батника и "echo ... | isql ...".
И любуемся в окно батника:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
21:38:57.515   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:58.655   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:38:59.780   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
. . .
21:39:53.499   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:39:54.655   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb
21:39:55.827   1DC: File  (RW-)   C:\MIX\firebird\fb30sc\security3.fdb

FB, работающий в режиме Super CLASSIC , держал открытым файл security3.fdb примерно 57 секунд!

Наблюдение за картинкой в ProcessExplorer'e (см аттач) показало, что:
1) когда к ФБ выполняется коннект, то он открывает (помимо прочего) вот такие три файлика:
Код: plaintext
1.
2.
C:\Documents and Settings\All Users\Application Data\firebird\fb_trace_******
C:\Documents and Settings\All Users\Application Data\firebird\fb_user_mapping
C:\Documents and Settings\All Users\Application Data\firebird\fb12_trace
2) когда коннект закрывается, то несмотря на то, что после <N> секунд закрывается также и sec3.fdb, эти файлы продолжают держаться открытыми еще какой-то отрезок времени <T>;
3) если третье и последующие подключения к базе (с немедленным дисконнектом) происходят после <N>, то до истечения <T>, то sec3.fdb будет удерживаться открытым уже не ~9...10 секунд, а почти минуту.

Обращаю особое внимание: это происходит на Super CLASSIC 'e.

Это было сделано намеренно или сиё есть "какая-то нелепая случайность" ?
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981687
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. Для SuperSERVER'a аналогичные манипуляции показывают, что файл sec3.fdb удерживается примерно одинаковое число секунд, что для 1-го, что для 5-го запуска "echo ... | isql ...". Но время это больше 1 минуты, что-то около 67-68 секунд:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
22:24:50.327   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:24:51.468   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:24:52.609   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:24:53.749   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:24:54.921   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
. . .
22:25:55.499   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:25:56.655   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:25:57.796   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb
22:25:58.952   1C4: File  (R--)   C:\MIX\firebird\fb30\security3.fdb


Этого я тоже не понимать. Откудова лезут дополнительные 7-8 секунды ?
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981698
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидОткудова лезут дополнительные 7-8 секунды ?
Слышь, ты чо такой въедливый? Тебе движок чо, нанимался миллисекунды считать? Секундой
туда, секундой сюда, не всё ли пох?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981700
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из-за этих долбаных 60 сек не могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому. А тут выясняется, что и 60 сек мало. Да еще и на SC такая же хрень, как и на SS :-)
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981703
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидне могу приконнектиться по embedded к security.db, если перед этим влез в
isql и приконнектился там по ТСР к чему-то другому
Лично у меня возникает резонный вопрос: а какого ты вообще лезешь через embedded куда
угодно, не погасив перед этим нормальный сервер?.. В особенности - в БД безопасности .
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981707
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А его, сервер этот, хрен погасишь из-под тестовой среды fbtest.py :-)
Вот и приходится делать через Жо - ждать то бишь, пока "само отвалится" через 60 (якобы) сек.
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981722
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

зачем оно тебе надо? Тем более с точности до секунды
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981731
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА его, сервер этот, хрен погасишь из-под тестовой среды fbtest.py :-)
и нехер. А кому сильно надо, тот перед запуском тестовой среды сбросит лингер у secdb.
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981735
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

или назначит в качестве security другую БД без лингера
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981881
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrкому сильно надо, тот перед запуском тестовой среды сбросит лингер у secdb.Ты про батник, который принудительно меняет некоторые параметры в конфиге перед запуском ФБ-инстанса, или про что-то другое ?
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38981903
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

про LINGER. Он не гарантирует что БД будет освобождена через указанное кол-во секунд. Потому что там ещё всяческие процессы могут происходить. Он всего лишь указывает что кеш не будет сброшен в течении указанного кол-ва секунд (по крайней мере не меньше этого значения). Ведь даже когда ты без лингера отрубаешься от базы она не освобождается мгновенно.
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982096
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидТы про батник, который принудительно меняет некоторые параметры в конфиге перед запуском ФБ-инстанса
именно про него, например
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982099
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrименно про него, например
вот только тесты без лингера станут работать еще медленнее :-(
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982100
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидне могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому.Зачем ?
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982108
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТаблоидне могу приконнектиться по embedded к security.db, если перед этим влез в isql и приконнектился там по ТСР к чему-то другому.Зачем ?

ага и мне то же интересно. Просто я вижу пока один смысл коннетится к security.db через embeded - это для его начальной инициализации. Но повторно то зачем?
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982145
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> зачем
Надо сделать тест для проверки 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'
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982201
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

подключись не ембедедом через TCP, но сначала в конфиге поставь

Код: sql
1.
2.
3.
4.
5.
security.db = $(dir_secDb)/security3.fdb
{
	RemoteAccess =true
	DefaultDbCachePages = 50
}
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982213
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениссначала в конфиге поставьне могу я в этом случае ничего менять в конфиге... он спрятан от мну далеко и навсегда
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982234
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

мда... Но раз ты не имеешь доступ к конфигу, тогда не понятно как тестировать баги, которые будут связаны с переназначением security БД. Или когда она сама на себя завязана. А такие баги уже есть см. CORE-4721
хотя наверное сам процесс зависания трудно определить скриптом
...
Рейтинг: 0 / 0
SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
    #38982264
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисне понятно как тестировать баги, которые будут связаны с переназначением security БД. Или когда она сама на себя завязана.Это надо, видимо, P.Cisar'я тревожить, чтобы он допилил механизьм...

Симонов ДенисА такие баги уже есть см. CORE-4721 Да, я помню, ты мне говорил про это недавно.

Симонов Денисхотя наверное сам процесс зависания трудно определить скриптомПочему ? Вспомогательными утилитами типа psList.exe, psKill.exe - запросто. Из-под батника вызываем isql командой start и запускаем psList - периодическую проверку существования процесса этого isql'я. Если через некоторое время этот процесс так и будет торчать в списке, то клияем его psKill'ом.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SuperClassic: security3.fdb НЕ закрывается около 60 сек, начиная с 3-го connect/disconnect
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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