[Moscow.pm] Неблокирующий клиент к Redis Cluster

Ruslan Zakirov ruslan.zakirov на gmail.com
Чт Сен 22 02:39:59 PDT 2016


2016-09-22 11:16 GMT+03:00 Eugene Ponizovsky <ponizovsky на gmail.com>:

> Руслан, если я правильно все рассчитал, то этот callback не будет вызван,
> если не осталось ни одной нормальной ссылки на $self, так как сам callback
> помещается в $self далее по коду, и он будет уничтожен вместе с последней
> ссылкой на объект клиента. Есть ли у Вас пример, в котором это приводит к
> ошибке?


Возможно вы правы. Это были домыслы на основе чтения кода.

Вот натолкнулся на более актуальную проблему и это уже в тестах:

EV: error in callback (ignoring): Can't call method "_process_reply" on an
undefined value at
/Users/ruz/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/AnyEvent/RipeRedis.pm
line 448, <DATA> line 2231.
Это как раз случилось из-за того что клиент прибиваю раньше времени. Ошибка
конечно у меня, но она не привела к "Client object destroyed prematurely."

Кстати как вы это решаете у себя? Я в большинстве случаев создаю коннект,
выполняю ряд операций без callback'а и только на после последней передаю
callback, где резолвлю promise (дергаю переданный callback). В некоторых
случаях совсем нетривиально подсчитать какая команда будет последней.

-- 
Best regards, Ruslan.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20160922/5c81a4dd/attachment.html>


Подробная информация о списке рассылки Moscow-pm