powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема с dead/lock после Rollback
25 сообщений из 56, страница 2 из 3
Проблема с dead/lock после Rollback
    #38560162
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТем, что вызывает меньше deadlock, которые ты так жаждешь получать.
В смысле - меньше? Как deadlock может быть больше или меньше?
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560178
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, я понял. Имеется в виду - реже :), т.к. при чтении (без FOR UPDATE WITH LOCK) не бывает deadlock-ов при rec_version.

Но у меня-то чтений и нет. Так чем же в моём случае rec_version хуже no_rec_version?
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560180
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockВ смысле - меньше? Как deadlock может быть больше или меньше?
no_rec_version порождает deadlock и в ситуациях, где rec_version этого не делает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560185
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockНо у меня-то чтений и нет
это ты так думаешь
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560206
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrэто ты так думаешь
Спасибо, что уделили внимание моей теме. Я так понял, это намёк на то, что перед update выполняется много чтений в любом случае, используя текущую транзакцию.

В любом случае, всем спасибо. Переделал на SELECT FOR UPDATE WITH LOCK, + изменил rec_version на no_rec_version. Отдал на тестирование/обновление.

Если в ближайшие несколько месяцев проблема не повторится, значит - помогло. Если повторится - приду сюда снова и доказательства принесу - полные логи с TIBSQLMonitor :)
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560290
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

это намек на то, что update сначала читает, а потом уже пишет
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560306
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockПеределал на SELECT FOR UPDATE WITH LOCK, + изменил rec_version на
no_rec_version.
Стекло протереть забыл, шаман хренов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560348
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrэто намек на то, что update сначала читает, а потом уже пишет
Да, я приблизительно это и имел ввиду под "перед update выполняется много чтений в любом случае". Спасибо.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560367
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСтекло протереть забыл, шаман хренов.
Не забыл - еще rollback на commit поменял.
Давайте не переходить на личности - я не любитель.

Если я раздражаю вопросами, ответы на которые можно получить перечитав статьи kdv - извините, такой я человек, я не могу осмыслить и запомнить сразу много информации, не попробовав всё сам на примерах и не прочувствовав, как это работает. И не понаступав на грабли, на что времени нет.
Остаётся в памяти только то, с чем сталкивался и чем пользуюсь.

Что касается логирования транзакций - та же проблем со временем. И отсутствие целесообразности применительно к данному примеру (транзакция может не откатиться только в случае, если программа зависла, чего не бывает никогда).
Но на будущее, конечно, сделаю. Хотя TIBSQLMonitor и не даёт параметров транзакции, всё равно будет полезно.

Так что меня тоже можно понять.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38560371
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЕсли я раздражаю вопросами, ответы на которые можно получить перечитав статьи
kdv - извините
Ты раздражаешь изменением случайных кусков кода в случайном направлении без анализа причин
проблемы. Это не поддаётся извинению.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561489
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovбез анализа причин
проблемы
Как без анализа? Я в самом начале написал, что причина может быть только в некорректной (не совсем корректной) работе с базой. Т.к. причины в логике программы быть не может, т.к. тогда зависала бы программа, чего не бывает.
Вот поэтому я и изменил работу с базой.

Что я сделал нелогично? Я не вижу других причин, кроме двух - в логике и в базе.

Надо что-то делать. Выхода из ситуации вижу три:
1. Если причина в логике - изменить логике (что я не сделал, т.к. тут ошибок нет);
2. Если причина в базе - изменить работу с базой;
3. Сменить профессию - с одной стороны - уже поздно, с другой - пока рано.

Вот такой анализ. Бред? Если по Вашему - да - прошу не отвечать.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561491
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockТ.к. причины в логике программы быть не может, т.к. тогда зависала бы программа

сильная гипотеза... а у неё доказательства есть ?

Код: sql
1.
2.
function Summa( x, y: integer): integer;
begin Result := x + x; end; 



Вот тебе программа, складывающая два числа. Она не зависает. А проблeма в логике есть.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561495
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЧто я сделал нелогично?
Ты не стал копать вглубь и выяснять какая последовательность действий приводит к проблеме.
Или хотя бы выяснить где именно возникает проблема. Ты просто увидел сообщение об ошибке
deadlock и решил, что оно возникает там, где ты ожидаешь получение deadlock. Извини, не
все баги настолько глупы, чтобы сидеть там, где ты их ожидаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561502
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockДа нет, этот алгоритм работает. Только до поры - до времени.

Т.е. твоя логика программирования - всё везде работает, пока не доказана ошибка.

Это испорченная логика, она привела к тебя к проблеме, а ты даже примерно не можешь угадать где она кроется.

Нормальная логика "не работает ничего и нигде, пока недоказано что ошибок нет"

То что ты написал - это примерно как

"Я перехожу дорогу не глядя по сторонам. Были статьи, где писали всякую чушь, что надо искать специальной место, какие-то специальные лампочки - но там слишком много написано, это мне не помогает, не могу запомнить. Ну и не надо, я просто подхожу к дороге и сразу её перехожу. Все работает, алгоритм правильный. Только до поры - до времени."

Вот у тебя "до поры до времени" и случилось.

И по большому счёту у тебя теперь два пути.

Один подход паскалевский: "сомневайся во всем." От самых корней и выше доказывай, что твоя программа правильная. Где не сможешь доказать - там и ошибка, или одна из. Откуда начинать теюе уже сказали - найди транзакцию, которая запись держит. Возникает дедлок - прочитай ВСЕ транзакции и сохрани их в файл и чтобы тебе этот файл присылали после таких проблем. Это ещё противнее, чем читать статьи, но в среднем это быстрее.

Другой подход: "Часы я потерял в деревне, но искать буду в городе, тут светлее". Если повезет - найдешь что-чьи-нибудь часы быстро и не напрягая мозги. И на неделю проблема спрячется. А потом вылезет в другом месте. А потом в третьем. И т.д. Но ты можешь оказаться везунчиком и решить проблему с первой попытки.

В первом случае тебе могут помочь хотя бы советами. Во втором - только пожелать удачи. Выбирать тебе.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561508
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovувидел сообщение об ошибке
deadlock и решил, что оно возникает там, где ты ожидаешь получение deadlock
ну естественно, т.к. больше нигде нет обращений к этой записи. Только при запуске чтение кое-каких данных из неё (та транзакция тоже закрывается, естественно), а потом был только этот update.

Итак, где именно я выяснил (не придумал, правда). Последовательность действий - пользователь пытается сделать некую операцию, чем запускает код, написанный в первом посте. Т.к. для этого ничего другого нельзя сделать.

Естественно, я это всё знал перед тем, как зайти на этот форум. К чему эти выражения - "копать вглубь" и т.д.?
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561513
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockт.к. больше нигде нет обращений к этой записи

т.е. по вашему запускается только один единственный экземпляр программы на одном единственном компьютере, а счама эта функция не может быть вызвана дважды ни через рекурсию (TDataSet.Onxxx, Application.ProcessMessages и прочие фишки) ни через многопоточность ?

YuRockта транзакция тоже закрывается, естественно
И в этом вы тоже уверены. И еще уверены, что закрывается сразу, а не через час.

Если вы действительно это все доказали, то случилось, что-то удивительно и редкое. Так бывает. Но чаще бывает, что уверенность программиста, все эти "естественно" - оказалось ошибочной.


YuRockЕстественно, я это всё знал
В таком случае вы можете это доказать и другим и себе, например просмотрев список транзакций во время ошибки. И дальше шаг ща шагом искать место, где "естественно" не сыграло.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561514
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochнайди транзакцию, которая запись держит...

В первом случае тебе могут помочь хотя бы советами. Во втором - только пожелать удачи. Выбирать тебе.
Эта транзакция может быть только одна - больше в проекте нет обращений к этой записи. И эта транзакция может не завершиться только в случае, если действие, выполняемое между update и rollback зависнет, но тогда и программа зависнет (т.к. это основной поток), чего не бывает.

Впрочем, я всё это уже не раз писАл, но ты, я так понял, мало читаешь - больше пишешь. Тебе наверно можно посоветовать больше читать, меньше писать.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561517
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochт.е. по вашему запускается только один единственный экземпляр программы на одном единственном компьютере, а счама эта функция не может быть вызвана дважды ни через рекурсию (TDataSet.Onxxx, Application.ProcessMessages и прочие фишки) ни через многопоточность ?
нет, это всё не по-моему. Дальше, я так понял, всё отчасти строится на этом утверждении (неверном), т.ч. на остальное отвечать уже не буду.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561520
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

Если ты из того же Донецка, что и я - можешь подойти, я на пальцах/примерах покажу ;)
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561523
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЭта транзакция может быть только одна
YuRockнет, это всё не по-моему.

Ты сам себе противоречишь. Впрочем, удачи тебе в попытках наугад припрятать ошибку ещё сильнее. Раньше или позже это получится и случаться она будет, например, раз в месяц. И всем будет хорошо.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561525
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

Спасибо, но боюсь меня в твой офис не пустят ;)
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561526
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Когда я говорил, что она может быть одна, конечно, имел ввиду, что она может быть только "эта" - с именем объекта trLock.

Если и это непонятно - действительно, о чем дальше говорить.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561530
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЭта транзакция может быть только одна - больше в проекте нет обращений к этой
записи.
В сообщении об ошибке не указывается на какой записи она возникла. Почему ты уверен, что
она возникает именно при обращении к этой записи?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561532
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockс именем объекта trLock.

Это выражение не имеет смысла. Но поскольку ты тут самый умный, то едва ли мы можем тебя чему-то учить.

Возможно, тебе действителньо стоит побиться лбом об стену пару недель, прежде чем ты признаешь, что программа работает не так, как ты себе придумал. А может быть тебе повезёт случайно спрятать ошибку и не менять своей самоувренности.

Я тебе написал несколько причин, почему может быть несколько транзакций, дёргающих эту запись, и это еще не все причины, а только самые очевидные. Тебе ещё раньше написали, как это проверить.
Но проверять ты не хочешь, тебе кажется, что твоё воображение, как работает программа, полностью соответствует реальности. Не вопрос, имееш ьправо искать ошибку так, как проще, а не так, как эффективнее.
...
Рейтинг: 0 / 0
Проблема с dead/lock после Rollback
    #38561555
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВ сообщении об ошибке не указывается на какой записи она возникла. Почему ты уверен, что
она возникает именно при обращении к этой записи?
Блин, ну потому, что она возникает, только когда пользователь, грубо говоря, нажимает на кнопку, по которой выполняется код, который я привёл в 1-м посте! Иначе зачем бы я его приводил - просто пофилософствовать?
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема с dead/lock после Rollback
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]