powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Deadlock когда убили приложение
12 сообщений из 12, страница 1 из 1
Deadlock когда убили приложение
    #38398182
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давненько не встречал. На клиентских местах.

Код: sql
1.
2.
3.
4.
5.
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
Lock conflict on no wait transaction.
Deadlock.
Update conflicts with concurrent update.
Concurrent transaction number is 182679.



Транзакция в том месте простая как барабан.
Код: pascal
1.
2.
3.
4.
5.
  T1 := TpFIBTransaction.Create(nil);//933
  QV1 := TB_Query.Create(Application);//933
  try               
    T1.DefaultDatabase := DBNavigator;
    T1.StartTransaction;    



Как это случилось без записи видео об ошибках фиг бы понял. Да и то сам чуть не проглядел отмотал на несколько секунд раньше и опа поймал, почему.

И так транзакцию нельзя завершить пока не напечатается фискальный чек и банковский аппарат не даст добро что оплата прошла. В момент работы с Сбербанковским аппаратом (знатоки как боритесь с этим глючным зверем), этот аппарат повис ничего не оставалось делать админу или оператору и они рубанули программу в диспетчере. И незакрытая транзакция повисла прошло 5 минут(судя по видео, видео отсутствует. пока программа не загружена видео не пишется) они вошли в программу и не смогли отредактировать/удалить чек. Валилась одна и та же ошибка с Deadlock. Закрыли программу снова открыли все чек без проблем удалился.

Где крутануть чтобы избежать долгого отсутствия коннекта клиента?
Или как можно такое с эмулировать стабильно тогда я сам разрулю это. В этот момент получается надо как то повесить сервак, чтобы он думал что коннект вернется и завершит транзакцию.
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398198
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, читай http://ibase.ru/devinfo/keepalive.htm
Во-вторых, разберись с какого перепою у тебя транзакция печати чека что-то апдейтит в базе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398217
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВо-первых, читай http://ibase.ru/devinfo/keepalive.htm
Во-вторых, разберись с какого перепою у тебя транзакция печати чека что-то апдейтит в базе.


Угу читаю.
Я перед печатью чека делаю проведение документа, но не завершаю его пока не напечатается чек. В таком состоянии не может быть конфликтов с другими операторами. Т.к. это место ни с кем не пересекается. Одно поле отвечает всего за состояние документа и кроме оператора создателя никому не виден документ. Был выбрали путь транзакцией. Если что повиснет сломается не напечатается транзакция откатится. Видать не все учел. За много лет первый раз такая ситуация. И то по вине глючных Сбербанковских аппаратов и рук людей. Если ты работал с USB сбербановсими аппаратами то ты нас поймешь. Их окно открывается и висит в некоторых случаях. А прога в этот момет как будто подвисает. Благо у меня потоки еще с базой общаются. Так бы сервак наверно счел коннект подвисшим.

Обслуживаю не я, а шишки на меня валятся. Сетку до сих пор не могут наладить до нормальной работы. И еще на серваке у них заведующая работает. Жуть короче. Мне проще програмно решить чем им работу сетей и сервака объяснять.
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398219
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикЯ перед печатью чека делаю проведение документа, но не завершаю его
пока не напечатается чек.
Если что повиснет сломается не напечатается транзакция откатится.

И самое забавное будет если оно сломается уже после того, как чек напечатан. Транзакция
откатится и в базе не останется никаких следов чека.

Правильной последовательностью будет:
1) Старт транзакции - установка статуса "отправлено на печать" - коммит.
2) Печать.
3) Старт транзакции - установка статуса "печать подтверждена/обломалась" - коммит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398318
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПравильной последовательностью будет:
1) Старт транзакции - установка статуса "отправлено на печать" - коммит.
2) Печать.
3) Старт транзакции - установка статуса "печать подтверждена/обломалась" - коммит.
+1 У меня так же распечатка организована, только не чеков и шагов поболе будет. Через короткие пишущие транзакции.
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398468
rstrelba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за оффтоп,
чото подумалось
-База Болтика, десять лет спустя (с)
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398535
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикЯ перед печатью чека делаю проведение документа, но не завершаю его
пока не напечатается чек.
Если что повиснет сломается не напечатается транзакция откатится.

И самое забавное будет если оно сломается уже после того, как чек напечатан. Транзакция
откатится и в базе не останется никаких следов чека.

Правильной последовательностью будет:
1) Старт транзакции - установка статуса "отправлено на печать" - коммит.
2) Печать.
3) Старт транзакции - установка статуса "печать подтверждена/обломалась" - коммит.


Да такое было. Когда с сеткой была у них засада приходилось предварительно проверять можно ли провести чек (это почти шаг 1) (2 откатили флаг не нужен и печать) (3 подтвердили тут приходилось снова проверять на возможность оплаты.)
Сейчас наконец свели все в одну транзакцию которая проводит оплату и контролирует ее. Для уменьшения затрат на контроль.

СП за статью и варианты. Есть над чем подумать. И тут же пришла мысль:

Надо по другому сделать журнал не проведенных транзакций это и будет типа отправлен на печать. Если грохнут программу и пользователь зайдет повторно программа просто отменить те транзакции которые висят. В журнале будет болтаться несколько строк и затраты на ведение его минимальны. Тем более сети нигде не придется ворошить не мое хозяйство.
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398712
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstrelbaИзвините за оффтоп,
чото подумалось
-База Болтика, десять лет спустя (с)

Через 10 лет не останется и следа от тех моментов которые доставили проблем разработчикам сервера. Цели другие и не дают писать как хочешь. Ну а тема не к базе относится, а к сетке. Вообще то база на слуху по большей части рекурсивностью связей. Бакуп/рестор не могли просто сделать. Не надо додумывать, что там все неправильно. Там все по потребности и тормозов нету.

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

Кстати в тексте статьи была ошибочка уже сообщил ДК.
В статье исправь #DummyPacketsInterval=0 на #DummyPacketInterval = 0
в конфиге так написано.
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398787
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

статья не моя
ошибка прям аховая
исправил
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398804
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЕвгений Болтик,

статья не моя
ошибка прям аховая
исправил

Я на лавры не претендую. Ошибок хватает и я не ангел. Просто сначала подумал нет такого потом начал искать частями ;)
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38398811
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про транзакции:
сидел в одном ресторане, расплатился картой. А у них глюкнул терминал, якобы потерял связь с сетью в какой-то момент, или перегрузился, не помню. Чек не успел напечататься. Причем, в памяти терминала операцию снятия не обнаружили.
Одновременно мне пришла смс от мобильного сбербанка, что деньги сняты.
Тем не менее, пришлось заплатить налом. Через пару дней я пришел к ним, попросил отменить снятие, и они это сделали, мне не пришлось обращаться в сбербанк.

Вот тебе и печать чека "в транзакции".
...
Рейтинг: 0 / 0
Deadlock когда убили приложение
    #38399061
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvпро транзакции:
сидел в одном ресторане, расплатился картой. А у них глюкнул терминал, якобы потерял связь с сетью в какой-то момент, или перегрузился, не помню. Чек не успел напечататься. Причем, в памяти терминала операцию снятия не обнаружили.
Одновременно мне пришла смс от мобильного сбербанка, что деньги сняты.
Тем не менее, пришлось заплатить налом. Через пару дней я пришел к ним, попросил отменить снятие, и они это сделали, мне не пришлось обращаться в сбербанк.

Вот тебе и печать чека "в транзакции".

У нас та же беда. Благо банк ставит свое по через которое побегав по меню можно сделать отмену.

Нам сначала говорили у вас собственное ПО в 1С нет таких проблем. Но в соседнем магазине 1С, начал покупать достаточно часто и те же проблемы. Начал звонить и говорить сказали, что дадут вместо USB-COM кабеля чистый COM. Причем перестали ссылаться на 1С. Один раз даже минут 5 проторчал перед кассой. Оператор несметное кол-во раз нажала на ENTER & ESC.

Когда на меня бочку клиент покатил я сказал. Будет проблема звони приеду и будем смотреть. Лечится следующим образом прога вроде весит выдергиваем терминал из компа через несколько секунд ПО терминала дает мне ошибку 99, оказалось не веси поя прога висит ДЛЛ банка. Втыкаем в комп пытаемся проплатить получаем 99. Еще раз выдергиваем терминал с компа. Снова вставляем. Эврика заработал терминал. Только поле этих слов удалось доказать что не мы виноваты. Банк сразу остыл и дал 1 шнур на COM. Надо будет спросить помогло ли клиенту.

Иногда кажется что тот кто пишет для терминала ПО не квалифицирован, а может просто пофигу ЗП платят и делают вид.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Deadlock когда убили приложение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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