【发布时间】:2016-08-19 00:23:09
【问题描述】:
我有一个应用引擎 java 项目,并且正在使用 objectify。我在应用引擎 Web 控制台的“堆栈驱动程序错误报告”视图中偶尔收到堆栈跟踪,与将项目放入内存缓存相关。这是代码:
try {
TestItem t = new TestItem(...);
ofy().save().entity(t).now();
} catch (Exception e) {
}
这是我偶尔会看到的错误:
com.googlecode.objectify.cache.MemcacheServiceRetryProxy 调用:Memcache 操作失败,放弃 java.lang.reflect.InvocationTargetException 在 com.google.appengine.runtime.Request.process-i4dx9s2kED3CVcPe(Request.java) 在 sun.reflect.GeneratedMethodAccessor27.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:44) 在 com.googlecode.objectify.cache.MemcacheServiceRetryProxy.invoke(MemcacheServiceRetryProxy.java:68) 在 com.sun.proxy.$Proxy9.putAll(未知来源) 在 com.googlecode.objectify.cache.KeyMemcacheService.putAll(KeyMemcacheService.java:91) 在 com.googlecode.objectify.cache.EntityMemcache.empty(EntityMemcache.java:319) 在 com.googlecode.objectify.cache.CachingAsyncDatastoreService$5.trigger(CachingAsyncDatastoreService.java:445) 在 com.googlecode.objectify.cache.TriggerFuture.isDone(TriggerFuture.java:87) 在 com.googlecode.objectify.cache.TriggerFuture.get(TriggerFuture.java:102) 在 com.googlecode.objectify.impl.ResultAdapter.now(ResultAdapter.java:34) 在 com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:22) 在 com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:10) 在 com.googlecode.objectify.util.ResultTranslator.nowUncached(ResultTranslator.java:21) 在 com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30) 在 com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:22) 在 com.googlecode.objectify.util.ResultWrapper.translate(ResultWrapper.java:10) 在 com.googlecode.objectify.util.ResultTranslator.nowUncached(ResultTranslator.java:21) 在 com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30) 在 com.me.test.Test.putSomethinInMemcache(Test.java:13) ... 引起:com.google.appengine.api.memcache.MemcacheServiceException: Memcache putAll: Unknown exception setting 1 keys 在 com.google.appengine.api.memcache.MemcacheServiceApiHelper$RpcResponseHandler.handleApiProxyException(MemcacheServiceApiHelper.java:69) 在 com.google.appengine.api.memcache.AsyncMemcacheServiceImpl$RpcResponseHandlerForPut.handleApiProxyException(AsyncMemcacheServiceImpl.java:349) 在 com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.absorbParentException(MemcacheServiceApiHelper.java:111) 在 com.google.appengine.api.utils.FutureWrapper.handleParentException(FutureWrapper.java:52) 在 com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:91) 在 com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:89) 在 com.google.appengine.api.memcache.MemcacheServiceImpl.quietGet(MemcacheServiceImpl.java:26) 在 com.google.appengine.api.memcache.MemcacheServiceImpl.putAll(MemcacheServiceImpl.java:115) ... 52 更多它似乎没有被 try 语句捕获。我只是在前面提到的管理控制台中看到它。
有谁知道这是什么意思,或者我怎么能理解它?我主要担心的是,在此操作失败后,对象的旧副本可能会卡在 memcache 中。
使用objectify 5.1.10。
谢谢
【问题讨论】:
-
我们经常遇到同样的问题,以至于我怀疑它实际上是一个内存缓存不可用的问题。除非谷歌基础设施是脆弱的(实际上也怀疑)。未知异常困扰着我。
标签: google-app-engine objectify