akka/akka-core

Clarification for typed GroupRouter comment on sending messages to unreachable cluster nodes

开放

#29,389 创建于 2020年7月16日

 (2 条评论) (0 个反应) (0 位负责人)Scala (3,547 个派生)batch import
1 - triagedhelp wantedt:docst:typed

仓库指标

星标
 (13,277 个星标)
PR 合并指标
 (平均合并 8天 19小时) (30 天内合并 10 个 PR)

描述

In the documentation for the GroupRouter, it states the following:

https://github.com/akka/akka/blob/6d290d66992429ed54af35e7354cb38770b449e6/akka-actor-typed/src/main/scala/akka/actor/typed/scaladsl/Routers.scala#L18

Taking a closer look at the implementation, when the GroupRouter receives the collection of possible routees from the receptionist, it uses an unapply method that filters based on reachable nodes (at least based on the associated comment indicates). As such, it seems the router tries, at least somewhat, to avoid unreachable nodes.

Is this a correct understanding of the GroupRouter's implementation?

New documentation could instead say:

The GroupRouter routes messages to the currently known reachable nodes, but there is always a chance that a node becomes unreachable as the router sends a message.

References for the GroupRouter's use of unapply, the definition of that unapply, and the associated reference to the serviceInstances method used in the unapply:

https://github.com/akka/akka/blob/6d290d66992429ed54af35e7354cb38770b449e6/akka-actor-typed/src/main/scala/akka/actor/typed/internal/routing/GroupRouterImpl.scala#L77-L84

https://github.com/akka/akka/blob/6d290d66992429ed54af35e7354cb38770b449e6/akka-actor-typed/src/main/scala/akka/actor/typed/receptionist/Receptionist.scala#L56-L75

https://github.com/akka/akka/blob/6d290d66992429ed54af35e7354cb38770b449e6/akka-actor-typed/src/main/scala/akka/actor/typed/receptionist/Receptionist.scala#L354-L368

贡献者指南