Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Периодически не срабатывает обработчик события  [new]
hvlad
Member

Откуда:
Сообщений: 9237
Fish.K.A.,

Когда вызывается EventAlertFunction ?
Зачем она вызывается из Timer1Timer ?
Какое время срабатывания у таймера ?

Зачем в onAlert проверяется AEventName ?
Бывают ли там значения, отличные от ожидаемого ? Какие ?
20 сен 17, 13:34    [20808836]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2092
Fish.K.A.
Я делал простой тест. Правда запускал его вручную. Проблема то же проскакивала.

Ну вот. Значит возвращаемся к пункту

YuRock
Необходимо убедиться, что регистрация событий всегда проходит, и без ошибок. Я не знаю, как там в FDADEventAlerter, но скорее всего там есть что-то типа AutoRegister, так вот я бы его отключил и вызвал регистрацию вручную. Продебажил бы (залогировал результаты параметры и результаты функции регистрации, в моем древнем IBX она "выглядит" как "Tsib_event_block(isc_event_block)").


И тогда нужно посмотреть, что при 'Не включен обработчик событий' было в логе регистрации эвентов. И чем это "что" отличается от того, что там при ситуации, когда эвент пришел.

Кроме этого, есть еще момент. Нужно быть уверенным, что эвент должен прийти. Так, на всякий. Я бы добавил переменную EventReceived и сделал так:

Timer1.Enabled := False; // Еще на форме поставить
EventReceived := False;
RegisterEvents;
Insert;
Commit;
Timer1.Enabled := True;


И изменил бы события подобным образом:
procedure TDM.OnAlert( AEventName )
begin
  if CompareText(AEventName, 'EVENTTEST') = 0 then
  begin
    EventReceived := True;
  end;
end;

procedure TDM.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  if EventReceived then
    Exit;

  ShowError('Не включен обработчик событий. Необходимо перезапустить программу!');
end;
20 сен 17, 13:42    [20808873]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Fish.K.A.
Member

Откуда:
Сообщений: 17
YuRock,

Таймер настроен на выдачу ошибки каждые 10 секунд пока его не отключат. Это сделано что бы люди не могли пользоваться ПО (конечно можно terminate сделать, но пока не хочу).

От того что я напишу в таймер события приходить не начнут к сожалению (
20 сен 17, 14:59    [20809214]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Fish.K.A.
Member

Откуда:
Сообщений: 17
hvlad,

У меня зарегистрировано 7 событий поэтому и стоит проверка на наименование события
20 сен 17, 15:00    [20809220]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
hvlad
Member

Откуда:
Сообщений: 9237
Fish.K.A.
У меня зарегистрировано 7 событий поэтому и стоит проверка на наименование события
Это вообще никак не отвечает на мой вопрос.
И на остальные тоже.
20 сен 17, 15:20    [20809294]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43664

Fish.K.A.
Если Вы имеете ввиду событие компонента onAlert, то там вообще все просто

А теперь, внимание, вопрос: в контексте какого потока выполняется это событие?

Posted via ActualForum NNTP Server 1.5

20 сен 17, 15:57    [20809414]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2092
Fish.K.A.
Таймер настроен на выдачу ошибки каждые 10 секунд пока его не отключат. Это сделано что бы люди не могли пользоваться ПО (конечно можно terminate сделать, но пока не хочу).

От того что я напишу в таймер события приходить не начнут к сожалению (

Я вел речь о тестовой программе, которая необходима для нахождения причины ошибки. Если "не будут" - это в данном случае отлично.
20 сен 17, 16:10    [20809463]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2092
Dimitry Sibiryakov
А теперь, внимание, вопрос: в контексте какого потока выполняется это событие?

Точно не знаю, но подозреваю что через Synchronize в главном потоке, как и в IBX.
20 сен 17, 16:11    [20809469]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43664

YuRock
подозреваю что через Synchronize в главном потоке, как и в IBX.

Это бы сделало алертер полностью неработоспособным в консольных приложениях.

Posted via ActualForum NNTP Server 1.5

20 сен 17, 16:23    [20809506]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2092
Dimitry Sibiryakov
Это бы сделало алертер полностью неработоспособным в консольных приложениях.

В IBX так и есть. И не только в консольных - в любых, где Application.Run не был вызван до получения событий.
Да и вообще он не работоспособен без допилок)
20 сен 17, 16:49    [20809589]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Fish.K.A.
Member

Откуда:
Сообщений: 17
hvlad

Когда вызывается EventAlertFunction ?
Зачем она вызывается из Timer1Timer ?
Какое время срабатывания у таймера ?

Зачем в onAlert проверяется AEventName ?
Бывают ли там значения, отличные от ожидаемого ? Какие ?


1) EventAlertFunction - вызывается на create DataModule формы (TDM.DataModuleCreate(Sender: TObject);)
2) Попытка еще раз сохранить запись в базе (теоретически ее можно от туда убрать).
3) Таймер срабатывает каждые 5с
4) Проверка осуществляется потому что у меня в зарегистрированы 7 различных событий;
5) Не проверял
22 сен 17, 10:42    [20814775]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Fish.K.A.
Member

Откуда:
Сообщений: 17
YuRock
И тогда нужно посмотреть, что при 'Не включен обработчик событий' было в логе регистрации эвентов. И чем это "что" отличается от того, что там при ситуации, когда эвент пришел.


Подскажите, а где смотреть этот лог? Или как его вести?
22 сен 17, 10:46    [20814801]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26564
Fish.K.A.
Попытка еще раз сохранить запись в базе

в смысле???
22 сен 17, 10:53    [20814849]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2092
Fish.K.A.
YuRock
И тогда нужно посмотреть, что при 'Не включен обработчик событий' было в логе регистрации эвентов. И чем это "что" отличается от того, что там при ситуации, когда эвент пришел.


Подскажите, а где смотреть этот лог? Или как его вести?

Там, куда ты его сохранишь.
Как вести? Сделать функцию WriteLog и передавать в нее текст, который надо залогировать.
22 сен 17, 11:40    [20815116]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Fish.K.A.
Member

Откуда:
Сообщений: 17
YuRock,

что-то я не понимаю что надо сохранять в лог.

Если у меня обработчик событий не ловит event, то выскакивает ошибка.
22 сен 17, 12:42    [20815453]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2092
Fish.K.A.
что-то я не понимаю что надо сохранять в лог.


YuRock
параметры и результаты функции регистрации, в моем древнем IBX она "выглядит" как "Tsib_event_block(isc_event_block)


Это для начала. Чтобы убедиться, что с регистрацией событий нет проблем. А иначе дальше смотреть нет смысла.
22 сен 17, 13:23    [20815654]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Fish.K.A.
Member

Откуда:
Сообщений: 17
YuRock,

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

ERROR: Unrecognized events block
22 сен 17, 19:10    [20817170]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
hvlad
Member

Откуда:
Сообщений: 9237
Fish.K.A.
YuRock,

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

ERROR: Unrecognized events block
Прекрасно.
В каком месте (я про стек вызовов, достаточно верхний десяток фреймов) ?
Что при этом передаётся в isc_que_events ?
22 сен 17, 20:28    [20817269]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
hvlad
Member

Откуда:
Сообщений: 9237
Кто ориентируется в современных потрохах Delphi, поправьте меня

procedure TIBEventThread.SQueEvents;
begin
  try
    Parent.Database.Call(Parent.Database.GDSLibrary.isc_que_events(StatusVector, @Parent.Database.Handle,
      @EventID, EventBufferLen, EventBuffer, TISC_CALLBACK(@EventCallback),
      PVoid(Self)), True);
  except
    on E : Exception do
      if Assigned(Parent.OnError) then
        if E is EIBError then
          Parent.OnError(Parent, EIBError(E).IBErrorCode)
        else
          Parent.OnError(Parent, 0);
  end;
end;
Т.е., если Parent.OnError не назначен, то привет игнор ошибкам.

Parent - это TIBEvents, своего обработчика для FOnError у него нет, т.е. вся надежда на юзера.

Но наш ТС пользуется не TIBEvents, а монстром TFDPhysIBEventAlerter (насколько я понял),
который использует TIBEvents и, мало того, что не назначает ему обработчик OnError, но и
юзеру такой возможности не даёт.

Всё правильно ?
22 сен 17, 20:40    [20817291]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Arioch
Member

Откуда:
Сообщений: 9088
hvlad
монстром TFDPhysIBEventAlerter (насколько я понял),
который использует TIBEvents


Это надо спрашивать в http://www.sql.ru/forum/1008012-32/firedac

Но я как-то сомневаюсь, что AnyDAC/FireDAC будет зависеть от IBX
25 сен 17, 13:31    [20820543]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
hvlad
Member

Откуда:
Сообщений: 9237
Arioch
hvlad
монстром TFDPhysIBEventAlerter (насколько я понял),
который использует TIBEvents


Это надо спрашивать в http://www.sql.ru/forum/1008012-32/firedac
Я смотрел исходники от Delphi 10.2, но мог что-то упустить, т.к. глубоко не вникал.

Arioch
Но я как-то сомневаюсь, что AnyDAC/FireDAC будет зависеть от IBX
USUS (с)
25 сен 17, 13:39    [20820574]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Arioch
Member

Откуда:
Сообщений: 9088
hvlad
Т.е., если Parent.OnError не назначен, то привет игнор ошибкам.


Учитывая, что ошибка прилетает не в основном потоке - то, вполне вероятно, это наилучший компромисс....
Да и пользователю надо учитывать, что OnError будет вызываться отнюдь не из Main VCL Thread
25 сен 17, 13:51    [20820637]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
hvlad
Member

Откуда:
Сообщений: 9237
Arioch,

нет и не может быть никакого оправдания сокрытию ошибок от пользователя.
И хватит флудить, здесь речь не об этом.
25 сен 17, 14:08    [20820719]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
hvlad
Member

Откуда:
Сообщений: 9237
hvlad
Всё правильно ?
Как выяснилось - не всё. К моему удивлению, TIBEvents (и TIBEventThread) - это классы не IBX, а FireDAC, соответственно работают они иначе.

Возвращаясь к теме - Fish.K.A., ты куда пропал ?
Хотелось бы всё же получить ответы на вопросы из 20817269
27 сен 17, 16:31    [20827219]     Ответить | Цитировать Сообщить модератору
 Re: Периодически не срабатывает обработчик события  [new]
Fish.K.A.
Member

Откуда:
Сообщений: 17
hvlad,

Я тут. Просто не всегда есть время отписываться. Я сейчас просто прогнал 10000 запусков тестовой программы. Причем перед прогоном переустановил еще раз FB и соответственно dll. У меня на 10000 запусках все гуд. Сейчас ищу время что бы прогнать у клиентов и посмотреть как у них все это прокатит. По мере поступления информации буду отписываться...
27 сен 17, 16:47    [20827278]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Firebird, InterBase Ответить