Size: a a a

2020 December 29

AS

Alexey Stavrov in Modern::Perl
А, да, но при этом zookeeper_close завершает сессию ещё
источник

AS

Alexey Stavrov in Modern::Perl
А если просто вызвать close_zsock, то соединение завершится без завершения сессии
источник

b

basiliscos in Modern::Perl
С т.з. кода выглдядет всё ок. Тут так: либо либа fork-safe либо нет. Судя по вашему описанию, вы что-то там натолкали в сессию локально, сделали форк, и  боитесь, что если в ребёнке будет undef $zk, то это порвёт сессию и в родителе будет беда, когда он попытается что-то сделать. Так? Если это так, то либа не fork-safe. К XS это не имеет прямого отношения. Тогда либа должная явно метод выставлять высокоуровеный zk_close() (а не низкоуровеный close_zsock() ), чтобы дать вам возможность что-то сделать.
источник

AS

Alexey Stavrov in Modern::Perl
basiliscos
С т.з. кода выглдядет всё ок. Тут так: либо либа fork-safe либо нет. Судя по вашему описанию, вы что-то там натолкали в сессию локально, сделали форк, и  боитесь, что если в ребёнке будет undef $zk, то это порвёт сессию и в родителе будет беда, когда он попытается что-то сделать. Так? Если это так, то либа не fork-safe. К XS это не имеет прямого отношения. Тогда либа должная явно метод выставлять высокоуровеный zk_close() (а не низкоуровеный close_zsock() ), чтобы дать вам возможность что-то сделать.
А почему вы думаете, что undef $zk нужно делать после форка?

В доке же явно написано, что нужно разорвать соединение перед форком
источник

b

basiliscos in Modern::Perl
Alexey Stavrov
А почему вы думаете, что undef $zk нужно делать после форка?

В доке же явно написано, что нужно разорвать соединение перед форком
Потому что это "обычное" поведение. Если они в доке так пишут, значит надо так делать и либа не fork-safe. Т.е. по-любому надо сессию открывать в родителе, и, если надо, в потомке.
источник

AS

Alexey Stavrov in Modern::Perl
basiliscos
Потому что это "обычное" поведение. Если они в доке так пишут, значит надо так делать и либа не fork-safe. Т.е. по-любому надо сессию открывать в родителе, и, если надо, в потомке.
Спасибо!
источник

AP

Anton Petrusevich in Modern::Perl
Alexey Stavrov
Ага, можно. Но я не умею в XS.

И судя по документации вызывать нужно в родителе до форка. Т.е. нужно потерять коннекцию, сделать форк, а потом создать коннекцию с прежней сессией.
надо просто запоминать пид при открытии коннекта, чтобы в деструкторе чужое закрывать молча, без шатдауна
источник

AP

Anton Petrusevich in Modern::Perl
т. е. форк-сейф делается довольно просто, обычно.
источник

b

basiliscos in Modern::Perl
Anton Petrusevich
т. е. форк-сейф делается довольно просто, обычно.
от потрохов C-шной либы зависит. Но ставлю да, что не парились и решили не делать.
источник

VG

Vadim Goncharov in Modern::Perl
Sergey Zhmylove
Есть четыре типа зависимостей в перл
какие?
источник

VG

Vadim Goncharov in Modern::Perl
Sergey Zhmylove
И пять уровней, к которым они применяются
какие?
источник

VG

Vadim Goncharov in Modern::Perl
Alexey Stavrov
Вот тут писали, что можно пробежаться по всем открытым сокетам и сделать close.

Неужели по /proc/self/fd/ бежать?
а чего, в линуксы так и не завезли closefrom() ?
источник

SZ

Sergey Zhmylove in Modern::Perl
Vadim Goncharov
какие?
Обязательные, очень рекомендуемые, рекомендуемые (но не очень, как например упомянутый IxHash или что там было) и конфликтующие
источник

AS

Alexey Stavrov in Modern::Perl
Vadim Goncharov
а чего, в линуксы так и не завезли closefrom() ?
Что это?
источник

SZ

Sergey Zhmylove in Modern::Perl
Vadim Goncharov
а чего, в линуксы так и не завезли closefrom() ?
Ему надо ещё проверить, что это сокеты
источник

SZ

Sergey Zhmylove in Modern::Perl
Vadim Goncharov
какие?
Ну ёпт! Я тебе что, энциклопедия? :)
источник

VG

Vadim Goncharov in Modern::Perl
Sergey Zhmylove
Обязательные, очень рекомендуемые, рекомендуемые (но не очень, как например упомянутый IxHash или что там было) и конфликтующие
да ну где это такое?
источник

SZ

Sergey Zhmylove in Modern::Perl
Vadim Goncharov
какие?
configure, build, test, runtime, develop
источник

SZ

Sergey Zhmylove in Modern::Perl
Vadim Goncharov
да ну где это такое?
В документации
источник

VG

Vadim Goncharov in Modern::Perl
Alexey Stavrov
Что это?
системный вызов для закрытия всех дескрипторов начиная с указанного номера
источник