firebird trouble

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Serge
Сообщения: 9
Зарегистрирован: 25 фев 2005, 10:20

firebird trouble

Сообщение Serge » 16 ноя 2005, 13:18

Есть два компьютера с Win 2000 Pro, один выступает в роли сервера с Firebird 1.5.2.4731 (super server),
второй в роли клиента. Соеденены через локальную сеть. Есть клиентское приложение которое круглосуточно отлавливает изменения в БД на сервере (через события).
В случае разрыва связи между компьютерами (выдернули кабель из сетевой карты) клиент должен автоматически пытаться переподключаться к базе.
Проблема в следующем. При вызове isc_que_events первый раз у клиента создаётся дополнительный поток, который удаляется после вызова isc_cancel_events.
Если произошёл разрыв связи между компьютерами, то isc_cancel_events не удаляет этот созданный поток. А после восстановления связи isc_que_events
опять создаёт новый поток. Клиентская программа после разрыва связи и переподключения проработала более 3-х часов, но поток созданный первым
вызовом isc_que_events и не удалённый после разрыва связи, так и не удалился. В результате после каждого разрыва-соединения создаётся новый поток в
клиентском приложении.
Каким образом можно удалить этот зависший поток?
Попробовал поставить Firebird 2.0.0.11252-1 (соответственно и fbclient.dll от него) таже проблема.

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 16 ноя 2005, 13:46


Serge
Сообщения: 9
Зарегистрирован: 25 фев 2005, 10:20

Сообщение Serge » 16 ноя 2005, 14:30

Ivan_Pisarevsky писал(а):KEEPALIVE ?

http://www.ibase.ru/devinfo/keepalive.htm
Статья рассказывает о сервере, а не о клиенте. В ней даже написано что для клиента настройка KEEPALIVE не обязательна.
Меня интерисует почему у клиентского приложения остаются лишние потоки. У меня до разрыва связи между компьютерами у клиента
было 6 потоков, после разрыва связи и нового переподключения (программа не закрывалась) стало 8 (использую 2 события).
После следующего разрыва и переподключения - стало 10 потоков. И это при том что я настроил KEEPALIVE на отключение через 90 сек.,
как написано в примере.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 17 ноя 2005, 14:14

похоже на багу в клиентской либе. Проверю на днях.

Ответить