# Singleton always times out for an ask

**URL:** https://discuss.akka.io/t/singleton-always-times-out-for-an-ask/6371
**Category:** Akka Cluster
**Tags:** scala
**Created:** [April 26, 2020, 8:22am UTC](https://discuss.akka.io/t/singleton-always-times-out-for-an-ask/6371 "2020-04-26T08:22:51Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![surendarchandra](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.akka.io/surendarchandra/32/1536_2.png) [@surendarchandra](https://discuss.akka.io/u/surendarchandra)
#### Post date: [April 26, 2020, 8:22am UTC](https://discuss.akka.io/t/singleton-always-times-out-for-an-ask/6371/1 "2020-04-26T08:22:51Z")

</div>

New to actors and I must be missing something trivial though tried many variations. Here is what I have:

import akka.actor.typed.ActorRef  
import akka.actor.typed.ActorSystem  
import akka.actor.typed.Behavior  
import akka.actor.typed.scaladsl.AskPattern.\_  
import akka.actor.typed.scaladsl.Behaviors  
import akka.actor.typed.SupervisorStrategy  
import akka.cluster.typed.ClusterSingleton  
import akka.cluster.typed.SingletonActor  
import akka.util.Timeout  
import com.typesafe.config.ConfigFactory  
import java.util.concurrent.TimeUnit  
import scala.concurrent.duration.FiniteDuration  
import scala.concurrent.ExecutionContext.Implicits.global  
import scala.util.Failure  
import scala.util.Success

object ClusteredApiRequest {  
case class RequestContextCommand(request: String, replyTo: ActorRef[Int])

def apply(): Behavior[RequestContextCommand] =  
Behaviors.setup { ctx =\>  
ctx.log.info(“Setup worked”)  
println(“Setup worked over println”) // This is printed  
Behaviors.receiveMessage[RequestContextCommand] {  
case RequestContextCommand(request, replyTo) =\>  
println(s"Received a request request") // This is not printed ctx.log.info( s"Received a request {request}")  
replyTo ! 100  
Behaviors.same  
case \_ =\>  
println(“Help me, unexpected”)  
Behaviors.same  
}  
}  
}

// Override the configuration of the port  
val config = ConfigFactory.parseString(s"""  
akka.remote.artery.canonical.hostname=“127.0.0.1”  
akka.remote.artery.canonical.port=2552  
akka.cluster.seed-nodes = [“akka://ClusterSystem@127.0.0.1:2552”],  
akka.actor.provider=cluster  
akka.actor.allow-java-serialization=on  
akka.cluster.singleton.singleton-name = “api”  
akka.cluster.singleton-proxy.singleton-name = “api”  
“”").withFallback(ConfigFactory.load())  
// Create an Akka system  
val clusterActorSystem = ActorSystem[ClusteredApiRequest.RequestContextCommand](ClusteredApiRequest(), “api”, config)

val singletonManager = ClusterSingleton(clusterActorSystem)  
val apiProxyActorRef: ActorRef[ClusteredApiRequest.RequestContextCommand] =  
singletonManager.init(  
SingletonActor(  
Behaviors  
.supervise(ClusteredApiRequest())  
.onFailureException,  
“api”)  
)

val timeout = Timeout(FiniteDuration(15, TimeUnit.SECONDS))  
val scheduler = clusterActorSystem.scheduler  
val result = apiProxyActorRef.ask(ClusteredApiRequest.RequestContextCommand(“Hello”, \_))(timeout, scheduler)  
result.onComplete{  
case Success(result: Int) =\>  
println(s"Result was $result")  
case Failure(exception) =\>  
println(“Failed”, exception)  
}

// Prints: (Failed,java.util.concurrent.TimeoutException: Ask timed out on [Actor[akka://api/system/singletonProxyapi-no-dc#-1785592397]] after [15000 ms]. Message of type [$line18.$read$$iw$$iw$ClusteredApiRequest$RequestContextCommand]. A typical reason for `AskTimeoutException` is that the recipient actor didn’t send a reply.)

---

<div class="post-metadata">

### Author: ![surendarchandra](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.akka.io/surendarchandra/32/1536_2.png) [@surendarchandra](https://discuss.akka.io/u/surendarchandra)
#### Post date: [April 26, 2020, 6:34pm UTC](https://discuss.akka.io/t/singleton-always-times-out-for-an-ask/6371/2 "2020-04-26T18:34:44Z")

</div>

nvm, I had to add Cluster(actorSystem) and then Join.
