Interesting. This is great information and gets us that much closer to being
able to deterministically reproduce the error. I'm pretty sure I've seen
this before myself, but it was a one off issue. I'll see if I can reproduce
this.

On Thu, Nov 19, 2009 at 12:50 AM, Dave Cheong <d...@davecheong.com> wrote:

> Hi Ikai,
>
> Thanks for the follow up. I can't say for sure, and the following is
> my crystal ball guess of what's happening.
>
> The problem only occurred when I was developing my email webhook. It
> has since stopped happening (I think). When developing my webhook,
> often I had exceptions thrown as a result of not parsing the
> Multiparts correctly. On the surface, it looks like when an exception
> is thrown, the email is marked as undelivered and AppEngine retries to
> send again later.
>
> This is further complicated when on some requests, I was processing a
> plain text email as a MultiPart email, which resulted in
> OutOfMemoryErrors. Due to the high CPU usage, AppEngine temporarily
> shuts down my app. Not sure what happens next, but it would appear the
> SMTP server retries whilst my app is down/suspended or otherwise
> broken and ends up failing to deliver each time. Something gets out of
> sync then, because it would build up a backlog of failed deliveries
> and retries for each failed delivery!
>
> The other side effect was my app would never stay up - AppEngine would
> restart it and then it would immediately get shut down again (due to
> the high CPU usage from the OutOfMemoryErrors).
>
> Once I fixed my code, I noticed lots of repeated emails coming through
> (and getting processed/saved to the datastore). I let it run for
> several hours for it to clear the backlog of emails. It has since
> stopped delivering these dups.
>
> Does this make sense? Plausible?
>
> Prior to using AppEngine's inbound mail funtionality, I was using
> http://smtp2web.com which had a nice feature in that if an exception
> is thrown when calling the webhook, it would send a bounce email to
> the sender and stop trying. This was nice I thought because there was
> user feedback that the mail didn't get through.
>
> Your thoughts?
>
> dave
>
> AppEngine may opt to suspend the app (eg due to high CPU usage). This
> in turn could be signalling to the SMTP server that the mail delivery
> has failed and signal it to try again later. However, what gets placed
> in the queue may be a duplicate, so there might be a reference to two
> copies of the same email that needs to be delivered.
>
> After a certain timeout, AppEngine restarts the app, which fails to
> restart properly because it immediately fails again due to the email
> resend. This is further complicated if a new version is deployed with
> changes to the email webhook - so some requests would succeed and
> others fail.
>
>
>
> On Nov 19, 8:35 am, "Ikai L (Google)" <ika...@google.com> wrote:
> > Hi Dave,
> >
> > Have you had any luck reproducing this? If so, what did you do?
> >
> >
> >
> >
> >
> > On Tue, Nov 17, 2009 at 4:45 AM, Dave Cheong <d...@davecheong.com>
> wrote:
> > > Hi all,
> >
> > > I'm observing a situation where my email webhook (/_ah/mail/*) is
> > > being invoked multiple times (seemingly randomly) for a given email.
> > > Not sure the pattern, but I'm definitely seeing log messages with the
> > > same email content multiple times, in no particular order or pattern.
> >
> > > I'm not sure if a red herring, but it does appear to be somewhat
> > > related to the fact that I am deploying new versions and restarting
> > > the app constantly, as I tweak my code which handles the inbound
> > > email.
> >
> > > Has anyone observed this behaviour? Can someone in Google help
> > > diagnose why my email webhook is being called repeatedly?
> >
> > > Any help is appreciated.
> >
> > > thanks,
> > > dave
> >
> > > --
> >
> > > 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=.
> >
> > --
> > Ikai Lan
> > Developer Programs Engineer, Google App Engine
>
> --
>
> 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=.
>
>
>


-- 
Ikai Lan
Developer Programs Engineer, Google App Engine

--

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