diff --git a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/Shard.scala b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/Shard.scala index 71b2cf263a..1273affd70 100644 --- a/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/Shard.scala +++ b/akka-cluster-sharding/src/main/scala/akka/cluster/sharding/Shard.scala @@ -455,11 +455,15 @@ private[akka] trait RememberingShard { selfType: Shard ⇒ context.child(name) match { case Some(actor) ⇒ actor.tell(payload, snd) - case None ⇒ - //Note; we only do this if remembering, otherwise the buffer is an overhead - messageBuffers.append(id, msg, snd) - processChange(EntityStarted(id))(sendMsgBuffer) + if (state.entities.contains(id)) { + require(!messageBuffers.contains(id), s"Message buffers contains id [$id].") + getEntity(id).tell(payload, snd) + } else { + //Note; we only do this if remembering, otherwise the buffer is an overhead + messageBuffers.append(id, msg, snd) + processChange(EntityStarted(id))(sendMsgBuffer) + } } }