> Нарколог на звонки не отвечает, спрошу здесь.
Тута я, тута > ----- > Мы все "знаем" про двухфазный коммит. Ну типа это круто и все такое. > > Ну так вот. В деструкторе моего класса управляющего транзакцией есть код > типа > > IF(ДескрипторТранзакции!=NULL) > РоллбакТранзакции(ДескрипторТранзакции); > > Посетила мысль. А если транзакция была запрепарена. То есть она участвует в > распределенной транзакции и координатор выполнил препаре это транзакции. Про > остальные участвующие транзакции нифига не известно. Тут мой объект > по-садистки уничтожают. Такое бывает. > > Ну так вот - получается > - что откатывать нельзя. Вдруг все запрепарились. Тогда координатор считает > что все OK. И если у него кто спросит "что делать" - он скажет коммитить. И > если кто в тихаря откатится - будет ... нехорошо > > - коммитить тоже нельзя. Вдруг не все запрепарились? Координатор будет > считать - что все плохо и надо откатывать. Короче коммит - тоже не хорошо. > > - просто взять и забить на этот дескриптор транзакции. Если подключение > продолжает свой нелегкий жизненный путь, то в gds32 (тьфу ты - fbclient.dll) > появляется бесходный дескриптор. Короче, утечка памяти. Не появляется. Насколько я помню (сейчас смотреть не буду), препарированные тр-ции учитываются особым образом. Сервер их не откатывает и не ругается на их наличие при дисконнекте, клиент тоже о них знает и удалит при дисконнекте. По крайней так оно задумано и должно быть. Нарколог, Хорсун Влад