send しているのに receive でブロックする

send しているのに受け取り側でブロックするのはなぜだ。receive 条件を _ にしても受信できないので失敗しているのかな。
gen_server:handle_call から隣のノードに gen_server:cast しているんだけどこれが原因だろうか?


検索で

  • 開始ノードが handle_call を受け取る
  • 右のノードに cast 。直後に結果受け取りの receive でブロックする。
    • cast 時には結果送り先として self を渡しておく
  • 右のノードは key がマッチしたら送り先に結果を ! する。マッチしなければさらに右のノードに cast する

という方式をとっているんだけど。OTP 的な定石がありそうだよなあ。