Hi, Inder.
I ran the following test, which indicates to me that memcache is shared
nicely between threads.
@Test
public void testThreadedMemcacheAccess() throws InterruptedException {
final String key = "foo";
final String value = "bar";
Thread t = new Thread(new Runnable() {
public void run() {
ApiProxy.setEnvironmentForCurrentThread(testEnvironment);
MemcacheService mc = MemcacheServiceFactory.getMemcacheService();
mc.put(key, value);
}
});
t.start();
t.join(); // Wait for thread to finish
final Map<String, String> inCache = new HashMap<String, String>(); // A
convenience to get a value out of the following thread so that our assert
can be in the main test thread
t = new Thread(new Runnable() {
public void run() {
ApiProxy.setEnvironmentForCurrentThread(testEnvironment);
MemcacheService mc = MemcacheServiceFactory.getMemcacheService();
String cached = (String)mc.get(key);
inCache.put(key, cached);
}
});
t.start();
t.join(); // Wait for thread to finish
assertEquals(value, inCache.get(key));
}
So, I suspect your problem is elsewhere. Run this test in your environment
to confirm it for yourself.
This scares me: << I am using Memcache as the data store>>. You're aware
that the memcache may be cleared at any point for many reasons? You can't
rely on values you put there being there the next time you look.
Good luck,
- Frank
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-appengine-java/-/DWs0Y71eFgQJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.