Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

Log, debug или что-то вроде этого?   Найти похожие ветки 

 
Lavrenty ©   (2007-05-17 21:38) [0]

Здравствуйте мастера!
Программа работает с базой InterBase. Есть запросы, в соответствие которым назначены транзакции. Минут через 20-30-40 после запуска программы выскакивает сообщение "Transaction is active", и продолжает появляться через каждый период обращения к базе(10 сек). Так вот, я не пойму(из этого краткого сообщения) на какой транзакции это начинается и почему. Подскажите пожалуйста, как можно сделать так, чтобы все события, происходящие в программе записывались в текстовый файл, а то никак не могу понять в каком месте программа глючит ?


 
Johnmen ©   (2007-05-17 22:08) [1]

Много параллельных транзакций?
Несколько потоков?


 
Lavrenty ©   (2007-05-17 22:31) [2]


> Много параллельных транзакций?

По ходу программы одновременно работающих транзакций 2-3. Вообще их 15 штук. Каждому запросу соответствует одна транзакция. Если закрывается запрос(набор данных) тут же закрываю и транзакцию ("Commit"). Но, судя по сообщению, выходит, что программа пытается совершить какое-то действие с данными, для которых транзакция ещё не завершилась. Самое интересное, что цикл обращений к базе (и соответсвенно выполняемых всех запросов) очень маленький - 6 сек. И вот всё это работает, работает и вдруг на тебе - "Transaction is active".


 
Johnmen ©   (2007-05-17 22:48) [3]

Тут надо код смотреть...
ЗЫ
Количество транзакций на приложение более 3 нецелесообразно. А иногда и вредно...


 
Lavrenty ©   (2007-05-17 22:50) [4]

Было именно 3. Было тоже самое.


 
Johnmen ©   (2007-05-17 23:08) [5]

Причём одна - читающая, вторая - пишущая. И м.б. третья - для отчетов.


 
Lavrenty ©   (2007-05-17 23:27) [6]

Извиняюсь, их было не 3, а 5. Дело в том, что программа была написана не мной, но мне приходится её запускать в жизнь. Так как с InterBase не работал раньше, то не обратил внимания, вернее не знал, что это важно

> Причём одна - читающая, вторая - пишущая. И м.б. третья
> - для отчетов.

посмотрел сейчас код повнимательнее, но что-то не видно строгого соблюдения этого правила(когда было 5 транзакций): читающие запросы со своей  транзакцией, пишущие со своей. Но, если то сообщение выскакивало именно из-за этого, то почему сейчас тоже происходит, ведь у каждого запроса своя транзакция. Отчёт не формируется, результат пишется в XML-файл.


 
Johnmen ©   (2007-05-17 23:40) [7]

В общем, надо ковырять код на предмет старта транзакции, когда она ещё не подтверждена/откачена(откатана? :)) о чем и говорит "Transaction is active".


 
Lavrenty ©   (2007-05-17 23:53) [8]

Что ж, спасибо! Буду ковырять.


 
Desdechado ©   (2007-05-18 13:20) [9]

Не знаю, как в современных IB, а в версиях до 6 включительно клиентская библиотека НЕ thread-safe, поэтому не должно быть одновременно выполняющихся запросов в рамках одного подключения к БД. Например, несколько потоков одновременно (каждый в своей транзакции) долбится в БД - гарантировано вылетит.


 
Sergey13 ©   (2007-05-18 13:22) [10]

Одна транзакция всегда надежнее. 8-)



Страницы: 1 вся ветка

Текущий архив: 2007.09.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
9-1160220897
alpha5
2006-10-07 15:34
2007.09.16
Углы поворота


15-1187336496
ProgRAMmer Dimonych
2007-08-17 11:41
2007.09.16
Подкиньте, плз, значки для тем форума


1-1183640451
Seldoff
2007-07-05 17:00
2007.09.16
CompareStr vs StrComp


15-1187506728
rol_intal@mail.ru
2007-08-19 10:58
2007.09.16
сименс сотовый


9-1160119250
pasha_golub
2006-10-06 11:20
2007.09.16
Стратегии. Расчеты