Yep that's been frustrating. Looks much better now. There's always
going to be some errors in the hub like this which means we may repeat
delivery for some feeds. That's why it's essential for subscribers to
use feed entry IDs (in Atom and RSS2) to de-dupe feed entries. Such
idempotent behavior means it's a waste of bandwidth but causes no
other side-effects.

On Wed, Sep 15, 2010 at 4:45 PM, pkarp <[email protected]> wrote:
> Hello,
>
> The Appengine Datastore has been throwing lots of timeout and
> contention errors these last couple of days (9/14, 9/15) due to
> latency spikes. One error in particular has resulted in duplicate
> items getting pushed to subscribers.
>
> At the end of a push_event, after all the subscribers have been
> notified a datastore Delete is performed. When this error occurs the
> hub attempts to process the push_event again resulting in duplicate
> items getting sent to subscribers. Even though the datastore has given
> up performing
>
> The push_event log entries include the normal debug messages
> concluding with the following:
>
> EventToDeliver complete: ...  delivery_mode = normal
>
> too much contention on these datastore entities. please try again.
> Traceback (most recent call last):
>  File "/base/python_runtime/python_lib/versions/1/google/appengine/
> ext/webapp/__init__.py", line 513, in __call__
>    handler.post(*groups)
>  File "/base/data/home/apps/bringit-pshb-test-1/1-0-alpha.
> 343674745300678296/main.py", line 648, in decorated
>    return func(myself, *args, **kwargs)
>  File "/base/data/home/apps/bringit-pshb-test-1/1-0-alpha.
> 343674745300678296/main.py", line 2672, in post
>    work.update(more_subscribers, failed_callbacks)
>  File "/base/data/home/apps/bringit-pshb-test-1/1-0-alpha.
> 343674745300678296/main.py", line 1544, in update
>    self.delete()
>  File "/base/python_runtime/python_lib/versions/1/google/appengine/
> ext/db/__init__.py", line 940, in delete
>    datastore.Delete(self.key(), rpc=rpc)
>  File "/base/python_runtime/python_lib/versions/1/google/appengine/
> api/datastore.py", line 397, in Delete
>    raise _ToDatastoreError(err)
> TransactionFailedError: too much contention on these datastore
> entities. please try again.
>

Reply via email to