Looking into this solution, I've jumped farther down the rabbit hole
than anticipated. First off, memcache write failures are not very
common and neglecting to use compare and set was probably the main
source of my issues.
However memcache writes can still fail and regardless of whether they
throw errors, can cause stale data in race conditions. Also, since gae
transactions live solely within the datastore, you cannot solve this
problem elegantly with transactions. See here for more info:
http://groups.google.com/group/appengine-ndb-discuss/browse_thread/thread/cd05c3c8ac7b27cf#

On Dec 1, 2:36 pm, Crizegg <craig.qui...@gmail.com> wrote:
> Setting the cache is where my pain point lies. I see zero log messages
> indicating a memcache failed write on the python side. I can't think
> of a case where you WOULDN'T want to know memcache failed to overwrite
> stale data. Since the next update is going to read the stale data from
> memcache and write it to the datastore!
>
> > In Javaland there is an error handler you can set on MemcacheService
>
> @Jeff, this is the exact type of solution I'm after for Python. I'm
> thinking proxy hooks with backed off retries.
>
> Will post soon.
>
> On Nov 30, 10:43 am, "Brandon Wirtz" <drak...@digerat.com> wrote:
>
>
>
>
>
>
>
> > Yes,
>
> > But that is "Drawer failed to open"
>
> > Memcache and the drawer should error when theyfailto be a place that may
> > or may not contain data.
>
> > Drawer is too busy an can't be bothered right now to check if it has your
> > socks, is different than there are no socks.  Drawer is suffering from
> > non-existence issues there is no drawer.  Or if you are on MS. Drawer only
> > allows you to read socks but you can't store new socks at this time so stop
> > asking.
>
> > From: google-appengine@googlegroups.com
> > [mailto:google-appengine@googlegroups.com] On Behalf Of Jeff Schnitzer
> > Sent: Wednesday, November 30, 2011 5:13 AM
> > To: google-appengine@googlegroups.com
> > Subject: Re: [google-appengine] Re: What if I dpn't want memcache tofail
> >silently?
>
> > FWIW, there are good reasons to ask when memcache fails - I mean a real
> > failure (say, timeout exception) rather than mere lack of data.
>
> > For example, if you are put()ing a new value in memcache and you want to
> > make sure the old value is replaced, you really want to be able to retry if
> > the put() fails.
>
> > In Javaland there is an error handler you can set on MemcacheService - the
> > default is to log and ignore errors but you can set a strict error handler
> > that propagates exceptions.  Dunno what the equivalent for Python is.
>
> > Jeff
>
> > On Wed, Nov 30, 2011 at 2:03 AM, Brandon Wirtz <drak...@digerat.com> wrote:
>
> > My socks are not in the drawer.
>
> > Return Error ("What has the Maid been doing all day?"
>
> > Just because the socks aren't in the drawer doesn't mean the drawer is in
> > error.
>
> > From: google-appengine@googlegroups.com
> > [mailto:google-appengine@googlegroups.com] On Behalf Of Tim Hoffman
> > Sent: Tuesday, November 29, 2011 9:39 PM
> > To: google-appengine@googlegroups.com
> > Subject: [google-appengine] Re: What if I dpn't want memcache tofail
> >silently?
>
> > Hi
>
> > Its not generally considered an error if something is not in the cache, (it
> > is after all a cache, not a guarunteed storage.)
>
> > Use a decorator to raise KeyError or whatever you feel is appropriate.
>
> > Rgds
>
> > Tim
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To view this discussion on the web 
> > visithttps://groups.google.com/d/msg/google-appengine/-/A3p__F-3o1kJ.
> > To post to this group, send email to google-appengine@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/google-appengine?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-appengine@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com
> > <mailto:google-appengine%2bunsubscr...@googlegroups.com> .
> > For more options, visit this group 
> > athttp://groups.google.com/group/google-appengine?hl=en.
>
> > --
>
> > I am the 20%
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-appengine@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to