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