Slick und Async spielen - ist das eine Rennbedingung?
lesenPlay-Slick DBAction-Code, Ich dachte, dass dieser Code eine Racebedingung enthalten könnte:
object DBAction{
// snip
def apply(r: (RequestWithDbSession) => Result)(implicit app:Application) = {
Action { implicit request =>
AsyncResult {
DB.withSession{ s:scala.slick.session.Session =>
Future(r( RequestWithDbSession(request,s) ))(executionContext)
}
}
}
}
Die Funktionr
läuft zu einem späteren Zeitpunkt nachwithSession
hat ein Future [Ergebnis] zurückgegeben und angerufensession.close()
. Gibt es eine Racebedingung in diesem Code?