In case anyone is interested in the feature Don talked about, you can vote
it here: http://code.google.com/p/googleappengine/issues/detail?id=2782 .

Regards,

Esteban

On Tue, Feb 16, 2010 at 5:56 PM, Esteban Masoero
<emaso...@getsense.com.ar>wrote:

>  Thanks for the response Don.
> I would suggest altering the page
> http://code.google.com/intl/en/appengine/docs/java/runtime.html to clarify
> this.
>
> Thanks again,
>
> Esteban
>
> El 16/02/2010 13:08, Don Schwarz escribió:
>
> 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.
>
>

-- 
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