Thanks, that cleared up the problem.  It even pointed out
LiftRules.unloadHooks which answered my second question.

On Dec 31, 12:33 am, joseph hirn <[email protected]> wrote:
> Yes I had an open thread on this issue but it's not being seen as a
> real issue.
>
> http://groups.google.com/group/liftweb/browse_thread/thread/78454f767...
>
> On Dec 30, 7:15 pm, Nathan Parry <[email protected]> wrote:
>
>
>
> > Searching turned up a few older threads similar to the problem I'm
> > seeing, but I couldn't find any solution.
>
> > Using just the skeleton project created by lift-archetype-basic, I'm
> > getting these exceptions out of jetty:
>
> > org.h2.jdbc.JdbcSQLException: Database may be already in use: Locked
> > by another process. Possible solutions: close all other connection(s);
> > use the server mode [90020-121]
>
> > ERROR - Failed to Boot
> > java.lang.NullPointerException: Looking for Connection Identifier
> > ConnectionIdentifier(lift) but failed to find either a JNDI data
> > source with the name lift or a lift connection manager with the
> > correct name
>
> > Once this happens, the app is non-functional.  This occurs whenever
> > jetty restarts due to updated code.  I can trigger the issue by:
>
> > 1. Running mvn jetty:run in one console
> > 2. Running mvn scala:cc in another console
> > 3. Running touch src/main/scala/bootstrap/liftweb/Boot.scala in a 3rd
> > console
>
> > This causes a recompilation, which causes a jetty restart, which blows
> > up with the exceptions.
>
> > Has anybody else seen or fixed this issue?  Should it be useful, I've
> > stashed the project 
> > athttp://nparry.com/posted_files/jetty_lift_issues/lifttest.tgz
> > including a jetty.log of the output with the full stack traces.
>
> > Wandering into wild-speculation territory (AKA speak and remove all
> > doubt) ...
>
> > Based on the jdbc exception, I poked around in the DB code - looking
> > at ProtoDBVendor I couldn't see how connections in 'pool' would ever
> > be released.  Thus I tried a quick hack in my project to force the
> > pool to be empty...
>
> >  DB.defineConnectionManager(DefaultConnectionIdentifier,
> >         new StandardDBVendor(
> >                              Props.get("db.driver") openOr
> > "org.h2.Driver",
> >                              Props.get("db.url") openOr
> > "jdbc:h2:lift_proto.db",
> >                              Props.get("db.user"),
> >                              Props.get("db.password")) {
> >             override def maxPoolSize = 0
> >         })
>
> > This obviously is not a good solution, but it does seem to clear up
> > the exceptions when jetty restarts - the theory being that during
> > shutdown the old connections are not closed, leading to errors during
> > restart since the new connection can't be created.  Forcing an empty
> > pool means there is no old connection around to trigger the problem.
>
> > I guess the question out of all that would be - do we need (or is
> > there already) a shutdown hook to correspond to the boot hook?  This
> > would allow for cleanup in this sort of situation (ie, close any
> > connections left in the pool).
>
> > --
> > Nathan

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.


Reply via email to