diff --git a/web/webkit/src/main/scala/net/liftweb/http/LiftSession.scala b/web/webkit/src/main/scala/net/liftweb/http/LiftSession.scala index 315bb6d124..cc458b81c4 100644 --- a/web/webkit/src/main/scala/net/liftweb/http/LiftSession.scala +++ b/web/webkit/src/main/scala/net/liftweb/http/LiftSession.scala @@ -87,6 +87,8 @@ object LiftSession { */ var onEndServicing: List[(LiftSession, Req, Box[LiftResponse]) => Unit] = Nil + + @volatile private var constructorCache: Map[(Class[_], Box[Class[_]]), Box[ConstructorType]] = Map() private[http] def constructFrom[T](session: LiftSession, pp: Box[ParamPair], clz: Class[T]): Box[T] = { @@ -211,6 +213,18 @@ object SessionMaster extends LiftActor with Loggable { } } + + /** + * End comet long polling for all sessions. This allows a clean reload of Nginx + * because Nginx children stick around for long polling. + */ + def breakOutAllComet() { + val ses = lockRead(sessions) + ses.valuesIterator.foreach { + _.session.breakOutComet() + } + } + def getSession(id: String, otherId: Box[String]): Box[LiftSession] = lockAndBump { otherId.flatMap(sessions.get) or Box(sessions.get(id)) }