Есть два компьютера с 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 от него) таже проблема.
firebird trouble
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Статья рассказывает о сервере, а не о клиенте. В ней даже написано что для клиента настройка KEEPALIVE не обязательна.
Меня интерисует почему у клиентского приложения остаются лишние потоки. У меня до разрыва связи между компьютерами у клиента
было 6 потоков, после разрыва связи и нового переподключения (программа не закрывалась) стало 8 (использую 2 события).
После следующего разрыва и переподключения - стало 10 потоков. И это при том что я настроил KEEPALIVE на отключение через 90 сек.,
как написано в примере.