--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-appengine+unsubscribe@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-appengine/3d0c204d-f2d4-4cb7-8db0-26c9db942e6a%40googlegroups.com.
There is no standard way of storing entities in memcache. Objectify uses its own namespace and uses the string version of Keys as the cache key. I don’t know what NDB does.Cache invalidation is already a hard problem (that and naming things, as they say). If you want to access data from both python and java, best to disable the memcache behavior of both NDB and Objectify (don’t put @Cache on anything shared).Jeff
On Mon, Oct 31, 2016 at 2:01 PM, Jonathan Munson <jpmu...@gmail.com> wrote:
Thanks, Chad. Re your comment about caching, I am using NDB on the Python side, which I thought used memcache automatically. So I guess I am using caching, but I thought that modules in the same project (mine are) shared memcache. Is that not true if one module is Python and the other Java?
On Monday, October 31, 2016 at 3:07:43 PM UTC-4, Chad Vincent wrote:Also, make sure you aren't doing deferred writes or starting the Java request before your Python transaction closes.
On Monday, October 31, 2016 at 2:05:06 PM UTC-5, Chad Vincent wrote:Yes. Consistency is handled by the database layer, not the application runtime.
HOWEVER, if you are caching entities (Objectify, etc.) you either need to ensure your Memcache keys are identical or disable caching for those entities. Otherwise the Java cache may return a stale result because the Python module didn't clear/update the entity on write.
On Monday, October 31, 2016 at 8:41:07 AM UTC-5, Jonathan Munson wrote:Hi,We have an app wherein a Datastore entity is written to by a Python module (using NDB), and then in an immediately following request, read from, using the entity's key, by a Java module. In a situation where the app was heavily loaded, it seemed like the Java module was reading stale data. The Datastore documentation says that lookup-by-key requests are strongly consistent, but does that apply even when writes are from a Python module and reads are from a Java module?Thanks,--Jon
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-appengi...@googlegroups.com.
To post to this group, send email to google-a...@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-appengine+unsubscribe@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-appengine/98666a27-819f-4513-a596-4f29ba3906da%40googlegroups.com.
Users are clever and insidious when it comes to breaking software. If you aren’t using a transaction in a get/update/put cycle, there are all manner of ways that updates could get screwed up or lost. Consider that requests might be sitting for many seconds at a cold start and therefore come in out of order… users may click buttons many times, launching multiple ajax requests… and since you only see this under heavy traffic, you’re probably seeing some weird 0.01% edge behavior.Transactions are the only way to guarantee that get/update/put cycles have the effect you think they do. This is the first thing I would fix before trying anything else.Jeff
On Tue, Nov 1, 2016 at 5:42 PM, Jonathan Munson <jpmu...@gmail.com> wrote:
Good thought, but in this case only one user can update the entity.
On Tuesday, November 1, 2016 at 6:13:13 PM UTC-4, pdknsk wrote:If more than one user can update the same entity, the bug may be that you're not updating the entity atomically (as in a transaction).
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-appengi...@googlegroups.com.
To post to this group, send email to google-a...@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.