This thread seems dead, too: http://groups.google.com/group/google-appengine-java/browse_thread/thread/80d014fd5abd526f
Here’s what happens:
- locally, by mvn gae:run, application works perfectly;
- I deploy the application to GAE;
- The first time I call the “/” url I wait a lot of time, but nothing strange: app is initializing, except it ends in a 500 error;
- I go ahead using my app…. all is right;
- I stop using app for 3 hours (e.g.);
- I return using it and…. it’s dead! It takes again a lot of time to initialize! This is awful! 500 error again
Exception Stack Trace is:
Uncaught exception from servlet
javax.servlet.UnavailableException: com.google.apphosting.api.DeadlineExceededException: This request (fc36c7e0f23da9e6) started at 2012/03/06 21:26:41.562 UTC and was still executing at 2012/03/06 21:27:42.117 UTC.
at org.mortbay.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:415)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:458)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:202)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:171)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:422)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)
Doesn’t GAE java team solved this bug yet?
What can I do? I’d like to avoid setting a cron job for polling my url every 5 minutes 🙁
I believe the simple answer is to pay for the service and create a resident instance, then you won’t be subject to the spin-up/tear-down which can be especially expensive with spring.
Another option is to trim your app so it doesn’t take so long to start.