Главная страница
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.026 c
2-1187817268
nord489
2007-08-23 01:14
2007.09.16
MainMenu и PopupMenu


2-1187980519
led
2007-08-24 22:35
2007.09.16
Edit


2-1187726666
Kiber1
2007-08-22 00:04
2007.09.16
Debugger Fault Notification


15-1187378684
Kostafey
2007-08-17 23:24
2007.09.16
Про запуск cmd


2-1187892125
Alex.rus
2007-08-23 22:02
2007.09.16
Прозрачная форма