Avatar for alf
Вот как-то так иногда выходит. Первый комментарий в UI успел раздвоиться, но потом сам схлопнулся в один, а второй было выглядел как нормальный, а потом я вдруг заметил что у поста внезапно стало много комментариев, развернул, а там такое.
Comment
Mac OS X 10.10.4, Safari Version 8.0.7 (10600.7.12) ‎· много пишу о важном
Comment
К слову, а откуда столько боли вокруг дублирующихся записей — вроде бы браузеры не так уж часто посылают форму два раза два раза? ‎· много пишу о важном
Comment
o_O (уныние). а дело уже не в браузерах, дело в автоматическом ретрае дедлоков. ‎· псы в рапиде
Comment
И они не откатывают транзакции? Или потом случается uncommitted read? ‎· много пишу о важном
Comment
@alf https://docs.google.com/document/d/19SvjDChfasKzsgZNzmdnZCf7G... — а ты пропустил отчётик от @squadette? Там в рубёвой обёртке сохраняются коменты и потом скопом досылаются. ‎· адский хардлайн в засаде
Comment
/* транзакции здорового человека и транзакции active record :( */ ‎· 9000
Comment
я вообще не понимаю, что происходит. там уже нет никакой рубевой обертки. я вечером буду снова смотреть. там нет никаких "транзакций active record", это обычные мускульные транзакции поверх InnoDB. я просто видимо упускаю что-то оооочень простое. ‎· псы в рапиде
Comment
ПОРА ПЕРЕХОДИТЬ НА ПОСТГРЕС %) ‎· адский хардлайн в засаде
Comment
"внутри тела возникает исключение про MySQL deadlock" - а что там за дедлоки такие, в какой момент они возникают? ‎· Е. Бучий
Comment
^^ в Postgres 9.5 наконец то добавили UPSERT, но я в общем и так через IF SELECT THEN UPDATE ELSE INSERT выкручиваюсь. Ну да, лишний запрос к базе. ‎· Е. Бучий
Comment
Скорее уж переписать frontend на языке для быстрого исполнения вместо языка для быстрого прототипирования. Ну или throw more hardware at it, как делают те, кто освоил монетизацию. ‎· 9000
Comment
@vinsentru, ну как тебе сказать? про дедлоки в мускуле много написано, как уменьшать их вероятность тоже примерно понятно, но по определению ведь ты не можешь с ними справиться в общем случае. ‎· псы в рапиде
Comment
Ну да, я почитал сейчас их доку, выглядит печально. Слушай, а у вас там один сервер, нету Master - Slave репликации? Просто это хорошая практика читать из Slave а писать в Master, разносит нагрузку и тд. Поможет ли против дедлоков, не знаю. ‎· Е. Бучий
Comment
Интересно-то, где в логике работы мокума получается ситуация, генерирующая дедлок. Чтобы получился дедлок, нужно попытаться захватить как минимум два лока, как я понимаю. ‎· 9000
Comment
локи захватываются при любых update и delete, по локу на каждый индекс и еще локи на строки таблицы. то есть ты просто пишешь SQL-операторы, которые пишут в базу, и больше тебе ничего делать не надо — все уже задедлочилось при неудачном стечении обстоятельств. ‎· псы в рапиде
Comment
@vinsentru, чтение из слейва никак не поможет, потому что дедлоки возникают, естественно, на запись. ‎· псы в рапиде
Comment
ну понятно, так и думал. тогда что, как-то денормализовывать схему базы? ‎· Е. Бучий
Comment
Аааа, это отсутствие row-level locks, что ли? Если один запрос пишет в таблицу, все остальные ждут? И брать локи в каком-то предсказуемом порядке оно не умеет, чтобы дедлоков не было? Ууу :( ‎· 9000
Comment
@vinsentru, нахуя? надо просто повторять пока не получится ) это же сугубо хаотический феномен. Проблема в том что сраная рельса что-то такое делает, что генерирует дубликаты в этом случае. ‎· псы в рапиде
Comment
@9000, слушай, я опять не понимаю. ты опять пришел мне рассказать, что во всех нормальных языках кроме перла есть проверка что все переменные объявлены, что ли? типа, мускуль когда писали просто не подумали пятнадцать минут, как все нормальные люди, что ли? Вот это вот "если один запрос пишет в таблицу, все остальные ждут" — это вообще о чем? да чего уж там, я не понимаю — ты просто скажи "ой, я так понял, что в MySQL глобальный лок и поэтому там последовательный доступ к базе данных, вот дураки, не могли нормально сделать". я охуеваю если честно. ‎· псы в рапиде
Comment
то есть ты судя по всему про дедлоки в mysql узнал десять минут назад но ты уже уверен в том, что это потому что он написан на школьной олимпиаде по информатике, что ли? епта, я охуеваю реально. ‎· псы в рапиде
Comment
"InnoDB uses automatic row-level locking." вот прям так и написано https://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html ‎· Е. Бучий
Comment
^^^ не надо катить на перл! use strict! ‎· Buttbuttin
Comment
^ доку на 5.0 давать — это все равно что скриншоты Windows 95 постить. ‎· псы в рапиде
Comment
@dma, ты пропустил разговор, откуда эта цитата, он был на закате Френдфида. ‎· псы в рапиде
Comment
@squadette: да, я пришёл сказать, что вообразил себе глобальный лок. нет, я не пришёл кого-либо ругать, а через "ууу" попробовал выразить своё сочувствие по поводу technical challenges, которые вытекают из такого положения вещей. да, я узнал про устройство локов в mysql пару секунд назад и ичезающе мало. мне всё равно непонятно, каким образом мокум вызывает дедлоки (если row-level locking есть), но расспрашивать тебя я больше не буду. ‎· 9000
Comment
да там нет никаких technical challenges, на самом деле. там какая-то идиотская проблема. ‎· псы в рапиде
Comment
@squadette может что нибудь связанное с мемоизацией в ActiveRecord? Или вот например почему у меня в боксе комментария иногда остается висячий текст комментария после того как я запостил, это может быть связано? ‎· 50% ash
Comment
да наверное это AR что-то делает за занавеской. комментарий в боксе это чистый JavaScript, это я какой-то ивент неправильно обрабатываю. ‎· псы в рапиде
Comment
@9000 про mySQL не знаю, особенно не нарывался, а в DB2 было две неочевидных проблемы: (1) row-level lock — это на записи, и с ней-то все хорошо. Но еще есть отдельный лок на [каждом задетом] индексе, и он для начала не row-level, по понятным причинам, и крайне плохо отслеживается. Вот и два лока. Дальше, (2) локи эскалировались. То есть любой твой row lock мог самопроизвольно превратиться в page lock или table lock. И задедлочиться можно было собственно на процессе эскалации. Я, повторюсь, не знаю InnoDB достаточно чтобы лечить локи по фотографии, но неочевидного счастья там тоже хватает. ‎· много пишу о важном
Comment
ну-тко, давайте-ка пофлудим в каментах ‎· псы в рапиде
Comment
кстати да, комменты вроде ведут себя хорошо. ‎· много пишу о важном
Comment
Но на меня мало подписок, а на саппорт много. Может, там? Или в @italia? :) ‎· много пишу о важном
Comment
да! меня поражает, что нигде в итальянских постах я не видел дублирующихся комментариев, и никто (судя по гуглотранслейту) на это не жаловался. загадка какая-то ‎· псы в рапиде
Comment
А вот, подтупили немного ‎· много пишу о важном
Comment
А вот, подтупили немного ‎· много пишу о важном
Comment
Дубликаты есть ‎· много пишу о важном
Comment
И, да, успеваю ввести новый коммент, пока предыдущий постится ‎· много пишу о важном
Comment
А то и два ‎· много пишу о важном
Comment
с удалением комментариев что-то не то, щас буду разбираться. ‎· псы в рапиде
Comment
Вот да, я не очень понимаю, что вообще триггерит этот баг. Но вот есть как видишь. ‎· много пишу о важном
Comment
Вот да, я не очень понимаю, что вообще триггерит этот баг. Но вот есть как видишь. ‎· много пишу о важном
Comment
Видимо, просто надо много писать ‎· много пишу о важном
Comment
Ну и тестерскую карму не пропьешь. *наливает* ‎· много пишу о важном
Comment
Ну и тестерскую карму не пропьешь. *наливает* ‎· много пишу о важном
Comment
Ну и тестерскую карму не пропьешь. *наливает* ‎· много пишу о важном
Comment
Ну и тестерскую карму не пропьешь. *наливает* ‎· много пишу о важном
Comment
В общем, я просто флужу, никаких особых трюков нет. Даже не налил еще ‎· много пишу о важном
Comment
В общем, я просто флужу, никаких особых трюков нет. Даже не налил еще ‎· много пишу о важном
Comment
Слушай, мне кажется что это таки JavaScript. Потому что я оставил комментарий тупить, и попробовал рефрешнуть страницу — получил тут же штук пять попапов — сейчас попробую включить мониторинг и посмотреть что по сети при этом летало. ‎· много пишу о важном
Comment
Пока рекорд — учетверение ‎· много пишу о важном
Comment
И еще коммент ‎· много пишу о важном
Comment
Много комментов разом ‎· много пишу о важном
Comment
Тест тест тест. ‎· много пишу о важном
Comment
Тест тест тест. ‎· много пишу о важном
Comment
Хард релоад не спасает, Веб инспектор в сафари бесполезен. Пойду таки налью. ‎· много пишу о важном
Comment
Ну в общем воспроизводится. Хочешь посмотреть на сессии и локи на живой базе? ‎· много пишу о важном
Comment
Ну в общем воспроизводится. Хочешь посмотреть на сессии и локи на живой базе? ‎· много пишу о важном
Comment
Ну в общем воспроизводится. Хочешь посмотреть на сессии и локи на живой базе? ‎· много пишу о важном
Comment
Ну в общем воспроизводится. Хочешь посмотреть на сессии и локи на живой базе? ‎· много пишу о важном
Comment
Ну и редактирование отвалилось — а еще десяток комментариев назад работало. ‎· много пишу о важном
Comment
ща, я борюсь с обновлением риверов. щас я сам еще попробую на своей машине повоспроизводить. --chg ‎· псы в рапиде
Comment
Ага, я просто вводил комментарии один за другим — как только комментарий слегка подтупляет, можно за ним следом послать десяток, и им уже станет плохо. Интересно, что если еще немного подождать, появляется странный эффект с формой комментария — ты ее раскрываешь, а она схлопывается меньше чем за секунду. Ну и если рефрешнуть страницу, вылетает десяток попапов. Так что мне кажется что это XHR таймаутится и перепосылает запрос. Но наверняка гоню. ‎· много пишу о важном

2015-2018 Mokum.place