Onesoft ➤ От версии MySQL это, скорее всего, не зависит. Вероятно, купоны реплицируются в обе стороны (домен "Интерактивный маркетинг"), и тут наблюдается одно из двух:
1. это ошибка 4892, исправленная в 55 версии УКМ: "Нестабильная связь между кассой и сервером -> Висят в БД коннекшены и таблицы заблокированы
". Предыдущая транзакция по гашению купона не успела откатиться (например, из-за разрыва связи), старый коннекшен остался висеть, заблокировав запись, новый не может к ней пробиться. Лечится обновлением до 55+, либо работой над улучшением качества связи, либо своевременным прибитием зависших коннекшенов (show processlist в БД кассы покажет несколько коннекшенов пользователя ukmremote, которых должно быть только два, а если их больше - то надо прибивать все кроме двух последних).
2. у нас в логах касс (правда, это была ещё 49sp3 версия) ругалось на другое:
select get_lock('version_control_mysterious_id_0_table_trm_in_discount_card_stop_list', 60
это т.наз. glassstorm, обусловленный двунаправленной репликацией таблицы trm_coupon_data, сервер может не справляться от потоков погашаемых купонов: принимая с кассы погашенный купон, он реплицирует его на остальные кассы, в этот момент с других касс тоже приходят купоны, которые реплицируются на остальные кассы, сервер не успевает их закоммитить, включая в пакеты данных для всех касс (ну или как-то так), в итоге накапливая снежный ком на каждую из касс.. в общем, ужас страшный. Вот что в логах сервера при этом происходит:
21:31:22: 0x00005858: INFO: replication#экспорт на терминал Краснознаменск Молодёжная (S0219) - Терминал №1#152ed5b0: trm_coupon_data, 0. Передано записей: 10464, удалено: 0
21:31:22: 0x00006334: INFO: replication#импорт с терминала Тверь Луначарского (S0210) - Терминал №2#153b15f8: trm_coupon_data, 0 (с 949 по 973)
21:31:22: 0x00006e7c: INFO: replication#экспорт на терминал Химки Лига (S0010) - Терминал №2#15351c10: trm_coupon_data, 0. Передано записей: 10465, удалено: 0
21:31:22: 0x00008dcc: INFO: replication#экспорт на сервер Balashiha#151802f0: trm_coupon_data, 0 (с 8374 по 8388)
21:31:22: 0x000053b0: INFO: replication#экспорт на терминал Марьино (S0020) - Терминал №2#14f5faf0: trm_coupon_data, 0. Передано записей: 10465, удалено: 0
21:31:22: 0x00009cb0: INFO: replication#экспорт на терминал Химки Лига (S0010) - Терминал №1#1973b360: trm_coupon_data, 0 (с 8387 по 8388)
21:31:22: 0x000063a8: INFO: replication#экспорт на терминал Ярославль Авиаторов (S0079) - Терминал №2#150f72e0: trm_coupon_data, 0. Передано записей: 10465, удалено: 0
21:31:22: 0x0000506c: INFO: replication#экспорт на терминал Мытищи Перловский (S0047) - Терминал №1#14f785b8: trm_coupon_data, 0. Передано записей: 10464, удалено: 0
21:31:23: 0x00006620: INFO: replication#экспорт на терминал Дмитров (S0009) - Терминал №1#1551d278: trm_coupon_data, 0. Передано записей: 10469, удалено: 0
21:31:23: 0x00004f3c: WARNING: replication#импорт с терминала Саранск Советская (S0224) - Терминал №2#19616808: Истёк таймаут ожидания освобождения блокировки 'version_control_mysterious_id_0_table_trm_coupon_data'. Пауза 30 сек.
21:31:23: 0x0000806c: INFO: replication#экспорт на терминал Саранск Советская (S0224) - Терминал №2#196169c0: trm_coupon_data, 0 (с 8375 по 8376)
21:31:23: 0x00005910: INFO: replication#экспорт на терминал Раменское (S0027) - Терминал №2#153e9450: trm_coupon_data, 0. Передано записей: 10468, удалено: 0
21:31:23: 0x00001ee8: INFO: replication#экспорт на сервер Chekhov_Msk#19258f28: trm_coupon_data, 0. Передано записей: 10465, удалено: 0
21:31:24: 0x00003040: INFO: replication#экспорт на сервер SW_Vernadskogo#1972baf0: trm_coupon_data, 0 (с 8371 по 8374)
21:31:24: 0x00002630: INFO: replication#экспорт на сервер Alexeevskaya#192a6e38: trm_coupon_data, 0 (с 8387 по 8388)
21:31:24: 0x00003798: INFO: replication#экспорт на сервер Mytischi_Alta#15508b40: trm_coupon_data, 0. Передано записей: 10474, удалено: 0
21:31:24: 0x00002504: INFO: replication#экспорт на сервер Odintsovo Makovskogo#1996cbd0: trm_coupon_data, 0. Передано записей: 10473, удалено: 0
21:31:24: 0x0000253c: INFO: replication#экспорт на терминал Красногорск (S0026) - Терминал №3#197b0f50: trm_coupon_data, 0. Передано записей: 10474, удалено: 0
Лечится обновлением до 53 (ошибка 5327 по утверждениям разрабов исправлена там), но мы обошлись отключением импорта таблицы trm_coupon_data с касс и серверов и еже15секундным запуском скрипта обработки принятых с касс и серверов чеков: берём из таблицы trm_out_receipt_discount_coupons_accept свежего чека купон, ставим ему status=0,version=0 и формируем пустой incr в конвертере import4. Всем этим занимается SQL-скрипт, запускаемый event schedulerом MySQL (у нас оно версии 5.6.12).