Приложение зависает после определенного количества ошибок.

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
bill_2000
Сообщения: 7
Зарегистрирован: 22 дек 2005, 18:43

Приложение зависает после определенного количества ошибок.

Сообщение bill_2000 » 19 янв 2006, 15:40

Моделируя реальную ситуацию запускаю в таймере заведомо ошибочный запрос (например, селект из несуществующей таблицы). Помещаю открытие датасета в try ... except ... end. Вот так:

Код: Выделить всё

procedure TForm1.Timer1Timer(Sender: TObject);
  begin
     try
       pFIBTransaction1.startTransaction;
       pFIBTransaction1.commit;
       pFIBDataSet1.open;
     except
     on e:exception do 
        begin
            Panel1.caption:=inttostr(strtoint(Panel1.caption)+1);
            Memo1.lines.Add(e.Message);
            pFIBTransaction1.rollback;
        end;
  end;
end;
После определенного количества попыток (количество - от 20 до 4000) программа виснет.
Каковы могут быть причины этого, и возможны ли способы борьбы?

Пользуюсь Firebird 1.5.2

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 19 янв 2006, 15:45

commit перед open это сильно, а так вообще, думаю что проблема или с таймером, или с FIBPlus, и к IB/FB отношения не имеет...

bill_2000
Сообщения: 7
Зарегистрирован: 22 дек 2005, 18:43

Сообщение bill_2000 » 19 янв 2006, 15:57

А FibPlus не является темой этого форума? Вроде в заголовке он упоминается...
Commit и Open - описался, пардон. На результат не влияет.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 19 янв 2006, 16:52

FIBPlus - это российский продукт, и у него есть вразумительная техподдержка. Если ты этим продуктом пользуешься, почему бы не спросить авторов?

Тем более, ты указал версию FB, которая тут никаким боком, а версию FIBPlus - нет...

Собственно, я не гоню тебя с FIBPlus отсюда, :) просто напрямую у разработчиков FIBPlus ответ можно получить быстрее.

p.s. смущает, однако, такая разница (от 20 до 400) в числе ошибок до зависания...

DSKalugin
Сообщения: 212
Зарегистрирован: 27 окт 2004, 13:39

Сообщение DSKalugin » 21 янв 2006, 14:38

Мож у таймера интервал достаточно мал и сервер не успевает реагировать на поток ошибок?

Ответить