scala - Future not working in Slick 3.1.x -
this function in slick prints "before future", doesn't print within future.map; seems future never executed, ideas problem?
note: i'm running slick standalone, not within play
def readmany = { val db = database.forurl("jdbc:mysql://localhost:3306/dddd", driver="com.mysql.jdbc.driver", user="root", password="xxx") val query = tablequery[tabledb] val action = query.sortby(_.name).result val future = db.run(action.astry) println("before future") future.map{ case success(s) => { s.map { row => somerow ( row.col1, row.col2 ) } println("s:" + s) } case failure(e) => throw new exception ("failure in readmany: " + e.getmessage) case _ => println("???") } }
first of case _ => println("???") redundant, guess added debug statement. somerow never returned, readmany of type future[unit].
going issue, if running small code snippet, may want wait future complete (remember blocking on future in "real-world" application discouraged):
import scala.concurrent.duration._ import scala.concurrent.await object foo extends app { def readmany: future[unit] = ??? await.ready(readmany, 10 seconds) } calling await.ready waits until future becomes completed, not retrieve result. in same way, calling method not throw exception if future failed.
Comments
Post a Comment