Косяк с блокировками строк в task

Ошибки, проблемы, способы их решения.
Adminchic

Косяк с блокировками строк в task

Сообщение Adminchic » 2016-05-22 23:18:51

Наблюдаю странный глюк.
Один таск может запустится два и более раз,
В логах
select is_free_lock(0001)
select get_lock
начинаем чтото делать, там есть длинная операция
параллельно другие операции
потом снова хватаем этот таск
select is_free_lock(0001)
select get_lock
И снова начинаем чтото делать по этому таску

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

Adminchic

Косяк с блокировками строк в task

Сообщение Adminchic » 2016-05-22 23:25:37

К стати, из за этого косяка. вероятно и бага с пустыми сообщениями на Email, есть тема и на этот все.

Adminchic

Косяк с блокировками строк в task

Сообщение Adminchic » 2016-05-23 1:12:35

Господа, а для чего килить процесс, который в данный момент обрабатывает задание?

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Косяк с блокировками строк в task

Сообщение Alex Keda » 2016-05-23 9:57:11

ничё не понял ...
попробуйте базу рестартануть или весь сервер.

если таски зависают - помогает
бывает такое, раз в пару месяцев
Убей их всех! Бог потом рассортирует...

Adminchic

Косяк с блокировками строк в task

Сообщение Adminchic » 2016-05-23 11:15:38

Alex Keda писал(а):ничё не понял ...
попробуйте базу рестартануть или весь сервер.

если таски зависают - помогает
бывает такое, раз в пару месяцев

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

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Косяк с блокировками строк в task

Сообщение Alex Keda » 2016-05-24 17:19:54

кем "килится"?
биллинг сам по себе никаких процессов не убивает.
единственный вариант - если не было выполнено ни одного задания за последний час
что само по себе, при нормальной работе, невозможно - за час несколько тасков проскакивает
если нету тасков - что-то висит. лично у меня - 99% случаев - это аська/жаббер/etc или сервер не отвечает
от первого помогает убиение на 100%, без последствий, от второго - зависит от причины.
но в любом случае - это лучше чем часами или даже сутками вообще никакие задачи не будут выполнятся

да и как это "наполовину"?
все задачи обёрнуты в транзакцию, если таск убит, транзакция просто откатится
Убей их всех! Бог потом рассортирует...

Adminchic

Косяк с блокировками строк в task

Сообщение Adminchic » 2016-05-29 13:48:17

Alex Keda писал(а):кем "килится"?
биллинг сам по себе никаких процессов не убивает.
единственный вариант - если не было выполнено ни одного задания за последний час
что само по себе, при нормальной работе, невозможно - за час несколько тасков проскакивает
если нету тасков - что-то висит. лично у меня - 99% случаев - это аська/жаббер/etc или сервер не отвечает
от первого помогает убиение на 100%, без последствий, от второго - зависит от причины.
но в любом случае - это лучше чем часами или даже сутками вообще никакие задачи не будут выполнятся

да и как это "наполовину"?
все задачи обёрнуты в транзакцию, если таск убит, транзакция просто откатится


Я этот биллинг знаю вдоль и поперек, не совсем понятно, причем тут транзакции и либы которые взаимодействуют с внешними приложениями.
Опишу еще раз:
Начинаем обрабатывать таск.
Либа чтото там делает на сервере во вне.
Прилетает из шела 2016-05-29 in 13:37:00: php-cgi auto killed, no executed tasks more than one hour
А на сервере то создался контейнер, но не переписал ему значение памяти, диска, pv_args и т.д.

Что мы получаем?
Контейнер создан, но не таск об этом не знает так как либа не успела сказать что таск исполнен и все начинается по кругу

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Косяк с блокировками строк в task

Сообщение Alex Keda » 2016-05-29 13:56:40

undefined писал(а):Источник цитаты no executed tasks more than one hour

час чтоле делает?
вы сами-то читаете то что цитируете?

--
если же знаете вдоль и поперёк - то какие проблемы исправить ошибку?
Убей их всех! Бог потом рассортирует...

Adminchic

Косяк с блокировками строк в task

Сообщение Adminchic » 2016-05-29 14:11:45

Alex Keda писал(а):
undefined писал(а):Источник цитаты no executed tasks more than one hour

час чтоле делает?
вы сами-то читаете то что цитируете?

--
если же знаете вдоль и поперёк - то какие проблемы исправить ошибку?

Я не большой знаток шела, я просто вырезал кусок с killall
Килится он по какому то алгоритму с временем и таймштампов в файлике TaskLastExecute.txt, еще раз, я не сильно понимаю шел скрипты, так что почему он килит каждую минуту, трудно сказать, крон обрабатывает скрипт каждые пару минут.

Аватара пользователя
Alex Keda
Сообщения: 2882
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 19 раз

Косяк с блокировками строк в task

Сообщение Alex Keda » 2016-05-29 14:21:40

Код: Выделить всё

sh -xv scripts/billing/check.cron.run.sh

выхлоп - сюда
Убей их всех! Бог потом рассортирует...


Вернуться в «Решение проблем»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя