#дедлок — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #дедлок, aggregated by home.social.
-
Секреты дедлоков
Как-то раз я допустил в своем коде дедлок и пока выкатывал пул реквест с его фиксом думал “ах как бы было хорошо, если дедлоки определялись на этапе компиляции”. Я решил немного разобраться в этом вопросе и вот что выяснил… Узнать больше
https://habr.com/ru/companies/ozonbank/articles/908978/
#go #goroutine #goroutines #panic #deadlock #deadlocks #timer #дедлок #горутина #горутины
-
Процедура обнаружения взаимоблокировок в PostgreSQL
РostgreSQL автоматически обнаруживает взаимоблокировки. В статье рассматривается процедура обнаружения взаимоблокировок, трудоёмкость процедуры обнаружения, причины, по которым параметр конфигурации log_lock_waits зависит от параметра deadlock_timeout и что влияет на выбор его значения. Обычно, приводятся примеры взаимоблокировки двух процессов, но заблокироваться может и более двух процессов. Параметр конфигурации deadlock_timeout устанавливает время ожидания получения блокировки, по истечении которого будет выполняться проверка на наличие взаимоблокировки. Параметр log_lock_waits типа boolean (по умолчанию false) позволяет получить в логе кластера сообщение о том, что сессия ждёт получения блокировки дольше, чем значение deadlock_timeout. Процедура обнаружения взаимоблокировок Если процесс не может получить блокировку, то он засыпает и устанавливает себе таймер, чтобы проснуться через время, заданное параметром конфигурации deadlock_timeout (по умолчанию 1 секунда). Процесс проснётся до истечения таймаута, если блокировка ему будет предоставлена. По завершению таймаута процесс начинает процедуру обнаружения взаимоблокировки. Процедура обнаружения взаимоблокировок относительно трудоёмка, так как набор блокировок не дерево, а граф. В графе проверяется наличия колец, которые указывают на взаимоблокировки. Если взаимоблокировки нет, то процесс снова заснёт и больше не будет проверять, есть ли взаимоблокировка до получения блокировки или прерывания транзакции в соответствии с параметрами transaction_timeout и аналогичными параметрами. Почему процесс не будет дальше поверять ситуацию возникновения взаимоблокировки с частотой deadlock_timeout?
https://habr.com/ru/articles/891782/
#postgresql #postgres #постгрес #дедлок #deadlock #блокировки