The behavior reported is a bug. We've reproduced it internally. We'll log our progress against the public bug reported earlier in this thread.
As for what you're reporting: yes, constant time flushing of a grouped set of keys was one of our intentions with namespaces. On Fri, Feb 5, 2010 at 4:09 PM, Peter Liu <tinyee...@gmail.com> wrote: > Hi Ikai, > > If the grab tail do intend to only return objects belong to a specific > namespace, > it will be nice if the memchace "clear all" function only delete > objects in a specific namespace as well. > > At first I thought the "clear all don't respect namespace" is due to > memcache implementation constraint. > But if grab tail can respect namespace, there's no reason why clear > all can't respect namespace right? > > It will be very helpful if we can flush a specific type of objects > (that belong to same namespace) in memcache. > Right now we either flush everything or maintain a set of keys and do > a delete all. > > Thanks. > > On Feb 5, 12:04 pm, "Ikai L (Google)" <ika...@google.com> wrote: > > Hey Viktor, > > > > I've been doing a bunch of research on this and it turns out my original > > post was incorrect. Unlike the version of Memcached that is out in the > wild, > > the version of Memcached being used for App Engine *does* provide > namespaced > > partitioning and nested namespace partitioning, with LRU expiration > > implemented both globally and per namespace (not 100% sure about > namespaces > > deeper than root + 1). What this allows is constant time namespace > flushing, > > among other security features. This is the mechanism that allows App > Engine > > developers to all use Memcache without trampling over each others' data > and > > is more sophisticated than prefixing a key - allowing us to track usage > per > > user without have to iterate over a key range. > > > > I'm going to file a bug internally against this mirroring your bug > report. > > It's possible we just haven't exposed the interface for nested LRU > grabTail > > correctly. I'll update the external bug if I hear anything. > > > > > > > > On Thu, Feb 4, 2010 at 1:17 AM, phraktle <phrak...@gmail.com> wrote: > > > Hi Ikai, > > > > > Any updates? (I see there's a mention of adding grabTail in the 1.3.1 > > > release notes - though it has been there in 1.3.0 already) > > > > > In the meantime, I have implemented the queue with a head/tail > > > pointer, using the increment call... This works, but if grabTail > > > worked as advertised, that would be more elegant. > > > > > Regards, > > > Viktor > > > > > On Feb 2, 7:28 pm, "Ikai L (Google)" <ika...@google.com> wrote: > > > > That's interesting. Let me follow up with the team to try to > understand > > > how > > > > this is supposed to work. > > > > > > On Tue, Feb 2, 2010 at 12:05 AM, phraktle <phrak...@gmail.com> > wrote: > > > > > > > Plus, it's working okay in the development server :) > > > > > > > V. > > > > > > > On Feb 2, 9:03 am, phraktle <phrak...@gmail.com> wrote: > > > > > > Hi, > > > > > > > > In this case grabTail would be quite useless, as one cannot > really > > > > > > construct queues with it (ie. it would just force removing items > from > > > > > > all namespaces that wouldn't even expire otherwise). The > > > documentation > > > > > > also implies that there's a separate LRU list per namespace, > which > > > > > > does make sense, but is not what's happening in production: > > > > > > > > > http://code.google.com/appengine/docs/java/javadoc/com/google/appengi > > > .. > > > > > .) > > > > > > > > "Grabs (atomically get and delete) items off the tail of LRU > list. > > > > > > This can be used to implement queue system with high throughput > and > > > > > > low latency, but low reliability. Current namespace should be set > and > > > > > > not empty for the service. For each namespace memcache maintains > a > > > > > > separate LRU list." > > > > > > > > Regards, > > > > > > Viktor > > > > > > > > On Feb 1, 9:22 pm, "Ikai L (Google)" <ika...@google.com> wrote: > > > > > > > > > I'll raise the issue with some other members of the team, but > it > > > seems > > > > > like > > > > > > > this is working as expected. A memcache namespace is nothing > more > > > than > > > > > a > > > > > > > prefix applied to a memcache key. There's no true partitioning > > > > > mechanism > > > > > > > within memcache. grabTail simply returns the item that would be > > > expired > > > > > by > > > > > > > the LRU mechanism if memcache needed more space. There isn't a > > > > > different > > > > > > > "queue" per namespace, only a "queue" for global expirations. > > > > > > > > > On Mon, Feb 1, 2010 at 4:29 AM, phraktle <phrak...@gmail.com> > > > wrote: > > > > > > > > Hi, > > > > > > > > > > On production, grabTail returns objects from other > namespaces. > > > This > > > > > is > > > > > > > > a significant problem that > > > > > > > > makes grabTail (thus queue-like usage) unusable. > > > > > > > > > > I filed this as a bug, with a very simple example here: > > > > > > > > > http://code.google.com/p/googleappengine/issues/detail?id=2706 > > > > > > > > > > Can you please look into this? I don't even see a workaround > that > > > I > > > > > > > > can implement in the meantime... > > > > > > > > > > Thanks, > > > > > > > > Viktor > > > > > > > > > > -- > > > > > > > > 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%2bunsubscr...@googlegroups.com<google-appengine-java%252bunsubscr...@googlegroups.com> > ><google-appengine-java%2B > > > unsubscr...@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=en. > > > > > > > > > -- > > > > > > > Ikai Lan > > > > > > > Developer Programs Engineer, Google App Enginehttp:// > > > > > googleappengine.blogspot.com|http://twitter.com/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> > <google-appengine-java%2bunsubscr...@googlegroups.com<google-appengine-java%252bunsubscr...@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=en. > > > > > > -- > > > > Ikai Lan > > > > Developer Programs Engineer, Google App Enginehttp:// > > > googleappengine.blogspot.com|http://twitter.com/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> > <google-appengine-java%2bunsubscr...@googlegroups.com<google-appengine-java%252bunsubscr...@googlegroups.com> > > > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/google-appengine-java?hl=en. > > > > -- > > Ikai Lan > > Developer Programs Engineer, Google App Enginehttp:// > googleappengine.blogspot.com|http://twitter.com/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=en. > > -- Ikai Lan Developer Programs Engineer, Google App Engine http://googleappengine.blogspot.com | http://twitter.com/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=en.