yes, I'm sure I'm not catching anything.
In fact, I did some tests and find out that most of the time the
deadline exception is not thrown when executing some code (untill now
the deadline exception only happened once), but It is always thrown when
you are doing something like sleep(). If you are executing some code,
then most of the time I only get a message of "Error: Server Error" with
status code 500 (and strangely the log doesn't say anything this time,
but I guess is still the HardDeadlineExceededError).
Here's the code:
public class SimpleServlet extends HttpServlet {
private static final long serialVersionUID = -3775863594932985057L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse
resp) throws ServletException, IOException {
try {
int time = req.getParameter("sleep") != null ?
Integer.valueOf(req.getParameter("sleep")) : 40;
resp.getWriter().println("Sleeping " + time + " seconds...");
Thread.sleep(time * 1000);
resp.getWriter().println("Interating infinitly...");
int i = 0;
boolean b = true;
while (b) {
i++;
}
} catch (InterruptedException e) {
System.out.println("InterruptedException");
resp.getWriter().println("InterruptedException");
} catch (DeadlineExceededException e) {
System.out.println("DeadlineExceededException");
resp.getWriter().println("DeadlineExceededException");
} catch (Throwable e) {
System.out.println("Catch throwable");
resp.getWriter().println("Catch throwable");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse
resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
I guess the deadline handling process ise still a bit immature and we
should not rely upon it.
Thanks,
Esteban
El 12/02/2010 18:40, John Patterson escribió:
I believe that the stack trace from a HDEE is not accurate. I found
that it seemed to be copied from the first DEE. Are you sure you are
not catching and ignoring this first?
On 12 Feb 2010, at 22:24, Esteban Ignacio Masoero wrote:
Hi there:
I'm facing the same problem. I tried and I tried and I still can't
catch any deadlineException that is supossed to be thrown when I
exceed the 30 seconds. The only thing I see is a
HardDeadlineExceededError, and in my case it ocurrs in the middle of
a JDOQuery.deletePersistentAll() method.
Anyone has any ideas? All I want to do is make sure that I'm handling
that situation in case it happens. Here's the stack:
com.google.apphosting.runtime.HardDeadlineExceededError: This request
(ccc45fc5ce7541bd) started at 2010/02/12 14:51:12.763 UTC and was
still executing at 2010/02/12 14:51:42.551 UTC.
at
com.google.appengine.runtime.Request.process-ccc45fc5ce7541bd(Request.java)
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(Unknown
Source)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(Unknown
Source)
at java.util.concurrent.CountDownLatch.await(Unknown Source)
at
com.google.net.rpc.util.RpcWaiter.waitForRpcsToFinish(RpcWaiter.java:96)
at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:98)
at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:48)
at
com.google.appengine.api.datastore.DatastoreApiHelper.makeSyncCall(DatastoreApiHelper.java:52)
at
com.google.appengine.api.datastore.DatastoreServiceImpl$3.run(DatastoreServiceImpl.java:225)
at
com.google.appengine.api.datastore.TransactionRunner.runInTransaction(TransactionRunner.java:30)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.delete(DatastoreServiceImpl.java:211)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.delete(DatastoreServiceImpl.java:192)
at
com.google.appengine.api.datastore.DatastoreServiceImpl.delete(DatastoreServiceImpl.java:184)
at
org.datanucleus.store.appengine.RuntimeExceptionWrappingDatastoreService.delete(RuntimeExceptionWrappingDatastoreService.java:141)
at
org.datanucleus.store.appengine.DatastorePersistenceHandler.delete(DatastorePersistenceHandler.java:196)
at
org.datanucleus.store.appengine.DatastorePersistenceHandler.deleteObject(DatastorePersistenceHandler.java:612)
at
org.datanucleus.state.JDOStateManagerImpl.internalDeletePersistent(JDOStateManagerImpl.java:4198)
at
org.datanucleus.state.JDOStateManagerImpl.deletePersistent(JDOStateManagerImpl.java:4166)
at
org.datanucleus.ObjectManagerImpl.deleteObjectInternal(ObjectManagerImpl.java:1470)
at
org.datanucleus.ObjectManagerImpl.deleteObject(ObjectManagerImpl.java:1395)
at
org.datanucleus.ObjectManagerImpl.deleteObjects(ObjectManagerImpl.java:1534)
at
org.datanucleus.store.query.Query.performDeletePersistentAll(Query.java:1881)
at
org.datanucleus.store.query.AbstractJavaQuery.performDeletePersistentAll(AbstractJavaQuery.java:136)
at org.datanucleus.store.query.Query.deletePersistentAll(Query.java:1832)
at org.datanucleus.store.query.Query.deletePersistentAll(Query.java:1780)
at org.datanucleus.store.query.Query.deletePersistentAll(Query.java:1769)
at org.datanucleus.jdo.JDOQuery.deletePersistentAll(JDOQuery.java:159)
at ar.com.SomeCodeOfMine$8.doStuff(Blah.java:175)
Thanks,
Esteban
On Thu, Dec 24, 2009 at 4:24 AM, Lior Harsat <lior.har...@gmail.com
<mailto:lior.har...@gmail.com>> wrote:
Hi Don,
thanx for your quick reply.
I am pretty sure I am not catching DeadlineExceededException anywhere
in the code (but I'll check again...).
I've seen some posts in the past and some bugs submitted to google
code that there is an inconsistent behavior with regard to the
deadline error/exception.
Thanx,Lior
On Dec 23, 10:36 pm, Don Schwarz <schwa...@google.com
<mailto:schwa...@google.com>> wrote:
> You cannot catch HardDeadlineExceededError.
DeadlineExceededException
> should be thrown first.
>
> Perhaps some code you are using is silently catching and
ignoring it?
>
>
>
> On Wed, Dec 23, 2009 at 4:08 AM, Lior Harsat
<lior.har...@gmail.com <mailto:lior.har...@gmail.com>> wrote:
> > Hi,
>
> > I am trying to build some mechanism for handling
> > HardDeadlineExceededError (and other timeouts as well).
> > I wish to catch this Error and wrap up my work so I can send
my own
> > response instead of the default error (500) message that GAE
produces.
> > Here's the problem. I cant catch this Error for some
reason.I've made
> > sure my catch clause is in the right place (from the error
provided
> > stack trace). I even catch a Throwable to make sure I don't
miss the
> > Error.
> > Sadly I don't reach the catch clause.
>
> > Has anyone had some experience with this?
> > Do you have some other innovative ideas on how to handle such
> > timeouts ?
>
> > B.T.W
> > I would have expected that a DeadlineExceededException would
be thrown
> > instead , dont you?
>
> > Thanx, Lior
>
> > --
>
> > You received this message because you are subscribed to the
Google Groups
> > "Google App Engine for Java" group.
> > To post to this group, send email to
> > google-appengine-java@googlegroups.com
<mailto:google-appengine-java@googlegroups.com>.
> > To unsubscribe from this group, send email to
> > google-appengine-java+unsubscr...@googlegroups.com
<mailto:google-appengine-java%2bunsubscr...@googlegroups.com><google-appengine-java%2B
unsubscr...@googlegroups.com <mailto:unsubscr...@googlegroups.com>>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine-java?hl=en.
--
You received this message because you are subscribed to the
Google Groups "Google App Engine for Java" group.
To post to this group, send email to
google-appengine-java@googlegroups.com
<mailto:google-appengine-java@googlegroups.com>.
To unsubscribe from this group, send email to
google-appengine-java+unsubscr...@googlegroups.com
<mailto:google-appengine-java%2bunsubscr...@googlegroups.com>.
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.
--
You received this message because you are subscribed to the Google
Groups "Google App Engine for Java" group.
To post to this group, send email to
google-appengine-java@googlegroups.com
<mailto:google-appengine-java@googlegroups.com>.
To unsubscribe from this group, send email to
google-appengine-java+unsubscr...@googlegroups.com
<mailto:google-appengine-java+unsubscr...@googlegroups.com>.
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.
--
You received this message because you are subscribed to the Google
Groups "Google App Engine for Java" group.
To post to this group, send email to
google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.
--
You received this message because you are subscribed to the Google Groups "Google
App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.