![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Log, debug или что-то вроде этого? [D7]
Lavrenty © (2007-05-17 21:38:00)Здравствуйте мастера!
Программа работает с базой InterBase. Есть запросы, в соответствие которым назначены транзакции. Минут через 20-30-40 после запуска программы выскакивает сообщение "Transaction is active", и продолжает появляться через каждый период обращения к базе(10 сек). Так вот, я не пойму(из этого краткого сообщения) на какой транзакции это начинается и почему. Подскажите пожалуйста, как можно сделать так, чтобы все события, происходящие в программе записывались в текстовый файл, а то никак не могу понять в каком месте программа глючит ?
Sergey13 (2007-05-18 13:22:00) [1]Одна транзакция всегда надежнее. 8-)
Desdechado (2007-05-18 13:20:00) [2]Не знаю, как в современных IB, а в версиях до 6 включительно клиентская библиотека НЕ thread-safe, поэтому не должно быть одновременно выполняющихся запросов в рамках одного подключения к БД. Например, несколько потоков одновременно (каждый в своей транзакции) долбится в БД - гарантировано вылетит.
Lavrenty (2007-05-17 23:53:00) [3]Что ж, спасибо! Буду ковырять.
Johnmen (2007-05-17 23:40:00) [4]В общем, надо ковырять код на предмет старта транзакции, когда она ещё не подтверждена/откачена(откатана? :)) о чем и говорит "Transaction is active".
Lavrenty (2007-05-17 23:27:00) [5]Извиняюсь, их было не 3, а 5. Дело в том, что программа была написана не мной, но мне приходится её запускать в жизнь. Так как с InterBase не работал раньше, то не обратил внимания, вернее не знал, что это важно
> Причём одна - читающая, вторая - пишущая. И м.б. третья
> - для отчетов.
посмотрел сейчас код повнимательнее, но что-то не видно строгого соблюдения этого правила(когда было 5 транзакций): читающие запросы со своей транзакцией, пишущие со своей. Но, если то сообщение выскакивало именно из-за этого, то почему сейчас тоже происходит, ведь у каждого запроса своя транзакция. Отчёт не формируется, результат пишется в XML-файл.
Johnmen (2007-05-17 23:08:00) [6]Причём одна - читающая, вторая - пишущая. И м.б. третья - для отчетов.
Lavrenty (2007-05-17 22:50:00) [7]Было именно 3. Было тоже самое.
Johnmen (2007-05-17 22:48:00) [8]Тут надо код смотреть...
ЗЫ
Количество транзакций на приложение более 3 нецелесообразно. А иногда и вредно...
Lavrenty (2007-05-17 22:31:00) [9]
> Много параллельных транзакций?
По ходу программы одновременно работающих транзакций 2-3. Вообще их 15 штук. Каждому запросу соответствует одна транзакция. Если закрывается запрос(набор данных) тут же закрываю и транзакцию ("Commit"). Но, судя по сообщению, выходит, что программа пытается совершить какое-то действие с данными, для которых транзакция ещё не завершилась. Самое интересное, что цикл обращений к базе (и соответсвенно выполняемых всех запросов) очень маленький - 6 сек. И вот всё это работает, работает и вдруг на тебе - "Transaction is active".
Johnmen (2007-05-17 22:08:00) [10]Много параллельных транзакций?
Несколько потоков?