We don't currently make any guarantees about throwing
DeadlineExceededException or HardDeadlineExceededError if you're in a tight
CPU loop.

We may in the future, but for the moment please only rely on getting
notifications of deadlines if you're doing one of the following:
a) periodically making API calls,
b) periodically doing I/O (e.g. loading data from files), or
c) sleeping.

On Mon, Feb 15, 2010 at 10:58 AM, Esteban Masoero
<emaso...@getsense.com.ar>wrote:

>  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>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> 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>
>> 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-j...@googlegroups.com.
>> > > To unsubscribe from this group, send email to
>>  > > 
>> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com><google-appengine-java%2B
>> 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<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-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.
>
>  --
> 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<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-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.

Reply via email to