Hi guys,
I'm trying to work out the following problem. Let me first describe the
scenario. I have an actor that loops over a specific set of numbers.
val someActor = system.actorOf(Props(new Actor {
var i = 1
def receive = {
case x: Int =>
log.info("Actor message is: " + x)
processor ! x
if (i == 15) {
i = 1
} else {
i = i + 1
}
}
}))
It sends another actor the number of that loop. That other actor represents
a materialized stream.
FlowGraph.closed(source) { implicit builder =>
roundSlot =>
val activeTwitterProfiles: Source[Vector[domain.Source], Unit] =
Source(PostgresChannelsRepository.activeTwitterProfiles)
val zip = builder.add(Zip[domain.Source, Int]())
activeTwitterProfiles.mapConcat(identity) ~> zip.in0
roundSlot.outlet ~> zip.in1
In this stream I use Slick to do a query to the db which returns a
Future[Vector[Source]]. I wrap that in a Source, get each entry separately
on the stream and wait at the first zip input. The second zip input
receives the loop number send by the actor.
When I start the program I get
java.sql.SQLTimeoutException: Timeout after 1015ms of waiting for a
connection.
at
com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:228)
~[twitter-rehydrater.jar:1.0]
at
com.zaxxer.hikari.pool.BaseHikariPool.getConnection(BaseHikariPool.java:183)
~[twitter-rehydrater.jar:1.0]
at
com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:91)
~[twitter-rehydrater.jar:1.0]
at
slick.jdbc.HikariCPJdbcDataSource.createConnection(JdbcDataSource.scala:136)
~[twitter-rehydrater.jar:1.0]
at
slick.jdbc.JdbcBackend$BaseSession.conn$lzycompute(JdbcBackend.scala:396)
~[twitter-rehydrater.jar:1.0]
at slick.jdbc.JdbcBackend$BaseSession.conn(JdbcBackend.scala:396)
~[twitter-rehydrater.jar:1.0]
at
slick.jdbc.JdbcBackend$SessionDef$class.prepareStatement(JdbcBackend.scala:254)
~[twitter-rehydrater.jar:1.0]
at
slick.jdbc.JdbcBackend$BaseSession.prepareStatement(JdbcBackend.scala:388)
~[twitter-rehydrater.jar:1.0]
at slick.jdbc.StatementInvoker.results(StatementInvoker.scala:33)
~[twitter-rehydrater.jar:1.0]
at
slick.jdbc.StatementInvoker.iteratorTo(StatementInvoker.scala:22)
~[twitter-rehydrater.jar:1.0]
at slick.jdbc.Invoker$class.foreach(Invoker.scala:69)
~[twitter-rehydrater.jar:1.0]
at slick.jdbc.StatementInvoker.foreach(StatementInvoker.scala:16)
~[twitter-rehydrater.jar:1.0]
at
slick.jdbc.StreamingInvokerAction$class.run(StreamingInvokerAction.scala:22)
~[twitter-rehydrater.jar:1.0]
at slick.jdbc.SQLActionBuilder$$anon$1.run(StaticQuery.scala:199)
~[twitter-rehydrater.jar:1.0]
at slick.jdbc.SQLActionBuilder$$anon$1.run(StaticQuery.scala:199)
~[twitter-rehydrater.jar:1.0]
at
slick.backend.DatabaseComponent$DatabaseDef$$anon$2.liftedTree1$1(DatabaseComponent.scala:231)
~[twitter-rehydrater.jar:1.0]
at
slick.backend.DatabaseComponent$DatabaseDef$$anon$2.run(DatabaseComponent.scala:231)
~[twitter-rehydrater.jar:1.0]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
~[na:1.8.0_60]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
~[na:1.8.0_60]
at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_60]
Caused by: org.postgresql.util.PSQLException: Connection attempt timed out.
at org.postgresql.Driver$ConnectThread.getResult(Driver.java:376)
~[twitter-rehydrater.jar:1.0]
at org.postgresql.Driver.connect(Driver.java:288)
~[twitter-rehydrater.jar:1.0]
at java.sql.DriverManager.getConnection(DriverManager.java:664)
~[na:1.8.0_60]
at java.sql.DriverManager.getConnection(DriverManager.java:247)
~[na:1.8.0_60]
at
org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:88)
~[twitter-rehydrater.jar:1.0]
at
org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:71)
~[twitter-rehydrater.jar:1.0]
at
com.zaxxer.hikari.pool.BaseHikariPool.addConnection(BaseHikariPool.java:396)
~[twitter-rehydrater.jar:1.0]
at
com.zaxxer.hikari.pool.HikariPool.lambda$addBagItem$2(HikariPool.java:75)
~[twitter-rehydrater.jar:1.0]
... 3 common frames omitted
I am assuming that the Future that comes back from Slick times out while
waiting for the actor to send the message. My question is how to overcome
this problem?
If you need any additional info - please let me know.
Thanks in advance,
Alex
--
>>>>>>>>>> Read the docs: http://akka.io/docs/
>>>>>>>>>> Check the FAQ:
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
---
You received this message because you are subscribed to the Google Groups "Akka
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.