Size: a a a

2018 November 08

YZ

Yuri Zhloba in pro.elixir
Возможно нужно умирать от call, если ген-сервер завершился нештатно. И точно не нужно умирать от call, если ген-сервер завершился штатно.
источник

AB

Alexey Bolshakov in pro.elixir
Нагородил, потом посмотрел и сравнил с кодом call ))
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Yuri Zhloba
Возможно нужно умирать от call, если ген-сервер завершился нештатно. И точно не нужно умирать от call, если ген-сервер завершился штатно.
Нет, нужно чтобы call отдавал ответ и caller мог сам решить, что делать с этим
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
В зависимости от системы, ситуации, архитектуры.
источник

Е

Евгений in pro.elixir
Yuri Zhloba
Возможно нужно умирать от call, если ген-сервер завершился нештатно. И точно не нужно умирать от call, если ген-сервер завершился штатно.
ну и как это сделать? держать в памяти причины завершения всех сдохших процессов? Это утопия
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Евгений
ну и как это сделать? держать в памяти причины завершения всех сдохших процессов? Это утопия
Нет, зачем держать в памяти? А, не мне ответ.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Alexey Bolshakov
Нагородил, потом посмотрел и сравнил с кодом call ))
Вот именно, делать свой ref, с пидом передавать его через cast - короче переизобретать call.
источник

YZ

Yuri Zhloba in pro.elixir
Да,  call должен отдавать 3 вида ответов: ok-result, timeout-norm, timeout-crash. А вызывающий процесс пусть разбирается с ними.
источник

Е

Евгений in pro.elixir
ну и как вызывающему процессу понять сдох ли процесс позавчера нормально или от краша?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Yuri Zhloba
Возможно нужно умирать от call, если ген-сервер завершился нештатно. И точно не нужно умирать от call, если ген-сервер завершился штатно.
Похоже что можно сделать линк если хочешь «умереть вместе»
источник

YZ

Yuri Zhloba in pro.elixir
Евгений
ну и как это сделать? держать в памяти причины завершения всех сдохших процессов? Это утопия
Ну я же сказал, как. Использовать управление ресурсами на базе монитора. Например, пул воркеров.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Yuri Zhloba
Ну я же сказал, как. Использовать управление ресурсами на базе монитора. Например, пул воркеров.
А если у тебя не воркеры, стартовать под каждый новый процесс poolboy с ровно одним процессом, лишь бы не кетчить ответ генсервера?
источник

Е

Евгений in pro.elixir
Yuri Zhloba
Ну я же сказал, как. Использовать управление ресурсами на базе монитора. Например, пул воркеров.
И что пул воркеров держит информацию о все сдохших процессах?
источник

Е

Евгений in pro.elixir
процесс сдох, а обратились к нему через месяц, пул должен весь месяц помнить от чего скончался процесс?
источник

Е

Евгений in pro.elixir
в БД писать эту инфу? Накой?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я все еще не понимаю, почему поведение должно зависеть от того, штатно или не штатно завершился процесс к которому ты идёшь
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
Я все еще не понимаю, почему поведение должно зависеть от того, штатно или не штатно завершился процесс к которому ты идёшь
я тоже не понимаю. мне лично не нужно, Дмитрию вроде тоже
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Этим скорее всего займётся кто-то другой
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Супервизор там, или монитор того процесса
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Опять же проблема бы решилась, если бы gen_server вместо exit-ов передавал ошибку в код дальше и был бы call!, который вёл бы себя как старый call и крэшился бы на ошибках. Но это слишком глубоко в OTP, чтобы это кто-то когда-то решил бы поменять - поэтому все Erlang и Elixir разработчики, когда такая необходимость появляются - используют try catch. И 6 лет назад уже использовали и используют сейчас. И нет в этом ничего плохого и никакая это не ошибка.
источник