On Nov 17, 10:27 pm, Rusty Wright <rwright.li...@gmail.com> wrote:
> Ah, thanks.  So if I knew how many servers my cloud is made of then I should 
> use that number for my MAX_RETRIES.  ;-)
>
> I'm curious about how others are handling the exceptions.  The 
> JDOCanRetryException is subclassed by other exceptions that don't seem like 
> things I'd want to retry, but perhaps I don't understand the subtleties.  
>

You are correct, you don't want to retry on any error, only the
'retry' errors.
I would write the retry method something like this...


  public Object retry(final ProceedingJoinPoint pjp) throws Throwable
{
        this.log.debug("called");

        int retryCount = 0;

        while (true) {
            JDOException exception = null;

            try {
                return (pjp.proceed());
            }
            catch (final JDOCanRetryException ex) {
                exception = ex;
                // retry
            }
            catch (final JDOException ex) {

                /**
                 * to quote Google's documentation: If any action
                 * fails due to the requested entity group being in
                 * use by another process, JDO throws a
                 * JDODataStoreException or a JDOException, caused by
a
                 * java.util.ConcurrentModificationException.
                 */
                if (!(ex.getCause() instanceof
ConcurrentModificationException))
                    throw ex; // fail

                exception = ex;
                // retry
            }

            this.log.debug("retryCount: {}, exception: {}",
                    Integer.valueOf(++retryCount),
                    ExceptionUtils.getFullStackTrace(exception));
        }
    }

--

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


Reply via email to