in management-cluster-http/src/main/scala/org/apache/pekko/management/cluster/scaladsl/ClusterHttpManagementRoutes.scala [244:268]
private def routeGetShardInfo(cluster: Cluster, shardRegionName: String) =
get {
extractExecutionContext { implicit executor =>
complete {
implicit val timeout: Timeout = Timeout(5.seconds)
try {
ClusterSharding(cluster.system)
.shardRegion(shardRegionName)
.ask(ShardRegion.GetShardRegionStats)
.mapTo[ShardRegion.ShardRegionStats]
.map { shardRegionStats =>
ShardDetails(shardRegionStats.stats.map(s => ShardRegionInfo(s._1, s._2)).toVector)
}
} catch {
case _: AskTimeoutException =>
StatusCodes.NotFound -> ClusterHttpManagementMessage(
s"Shard Region $shardRegionName not responding, may have been terminated")
case _: IllegalArgumentException => // Akka 2.5
StatusCodes.NotFound -> ClusterHttpManagementMessage(s"Shard Region $shardRegionName is not started")
case _: IllegalStateException => // Akka 2.6
StatusCodes.NotFound -> ClusterHttpManagementMessage(s"Shard Region $shardRegionName is not started")
}
}
}
}