API调用datastore_v3.Put()的请求太大。使用Objectify(DataStore)而不上传文件 [英] The request to API call datastore_v3.Put() was too large. using Objectify (DataStore) and not uploading files

查看:150
本文介绍了API调用datastore_v3.Put()的请求太大。使用Objectify(DataStore)而不上传文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




com.google.apphosting.api.ApiProxy $ RequestTooLargeException:
请求API调用datastore_v3.Put()太大。

我使用的是Objectify 4.0,并且没有上传任何文件。我正在为我的应用程序使用DataStore,但是1Mb以上的唯一项目是 _ah_SESSION 实体中的 _values blob。 / p>

控制台的图像位于:
http:/ /goo.gl/qP7v7U



我不知道如何解决问题,甚至在之前询问错误时,我的问题是我不是使用文件,我实际上使用数据存储。

编辑:再次测试,它似乎打破了删除操作。这是日志。


  W 12:37:39.798 /editarContrato.jsf 
com .google.apphosting.api.ApiProxy $ RequestTooLargeException:API调用datastore_v3.Put()的请求太大。
at com.google.apphosting.utils.runtime.ApiProxyUtils.convertApiError(ApiProxyUtils.java:42)
at com.google.apphosting.runtime.ApiProxyImpl $ AsyncApiFuture.success(ApiProxyImpl.java:497)
at com.google.apphosting.runtime.ApiProxyImpl $ AsyncApiFuture.success(ApiProxyImpl.java:411)
at com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher $ 1.runInContext(RpcStub.java :856)
,位于com.google.tracing.TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java:444)
,位于com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220)$ b在com.google.tracing.TraceContext处为$ b $ AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
at com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
at com .google.tracing.TraceContext $ TraceContextRunnable.run(TraceContext.java:441)
at com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher.runCallback(R pcStub.java:894)
,位于com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher.rpcFinished(RpcStub.java:904)
,位于com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher.success(RpcStub.java:883)
,位于com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:1130)
,位于com.google.net.rpc3。 impl.client.RpcClientInternalContext.finishRpcAndNotifyApp(RpcClientInternalContext.java:1030)
com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1459)
com.google。 net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel.java:1280)
at com.google.net.rpc3.impl.client.RpcNetChannel.handleResponse(RpcNetChannel.java:2995)
at com.google.net.rpc3.impl.client.RpcNetChannel.messageReceived(RpcNetChannel.java:2731)
,位于com.google.net.rpc3.impl.client.RpcNetChannel.access $ 2900(RpcNetChannel.java:175)
,位于com.google.net.rpc3.impl.client.RpcNetCha请在com.google.net.rpc3.impl.client.RpcChannelTransportData $ TransportCallback.receivedMessage(RpcChannelTransportData.java:669)
处申请$ n $ TransportCallback.receivedMessage(RpcNetChannel.java:3922)
。 net.rpc3.impl.wire.RpcBaseTransport.receivedMessage(RpcBaseTransport.java:457)
at com.google.apphosting.runtime.udrpc.UdrpcTransport $ ClientAdapter.receivedMessage(UdrpcTransport.java:577)
at com.google.apphosting.runtime.udrpc.UdrpcTransport.dispatchPacket(UdrpcTransport.java:386)
,位于com.google.apphosting.runtime.udrpc.UdrpcTransport.readPackets(UdrpcTransport.java:283)
at com.google.apphosting.runtime.udrpc.UdrpcTransport $ 1.run(UdrpcTransport.java:100)
com.google.net.eventmanager.AbstractFutureTask $ Sync.innerRun(AbstractFutureTask.java:260)
com.google.net.eventmanager.AbstractFutureTask.run(AbstractFutureTask.java:121)
com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:59 4)在com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:1011

。在com.google.net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:892)
在com.google.net.eventmanager.WorkerThreadInfo.runWorkerLoop(WorkerThreadInfo.java:161)
在com.google.net.eventmanager.EventManagerImpl $ WorkerThread.run(EventManagerImpl.java:1879)
F 12:37:39.801从servlet未捕获异常
com.google.apphosting.api.ApiProxy $ RequestTooLargeException:对API调用datastore_v3.Put()的请求太大。
at com.google.apphosting.utils.runtime.ApiProxyUtils.convertApiError(ApiProxyUtils.java:42)
at com.google.apphosting.runtime.ApiProxyImpl $ AsyncApiFuture.success(ApiProxyImpl.java:497)
at com.google.apphosting.runtime.ApiProxyImpl $ AsyncApiFuture.success(ApiProxyImpl.java:411)
at com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher $ 1.runInContext(RpcStub.java :856)
,位于com.google.tracing.TraceContext $ TraceContextRunnable $ 1.run(TraceContext.java:444)
,位于com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220)$ b在com.google.tracing.TraceContext处为$ b $ AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
at com.google.tracing.TraceContext $ AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
at com .google.tracing.TraceContext $ TraceContextRunnable.run(TraceContext.java:441)
at com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher.runCallback(R pcStub.java:894)
,位于com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher.rpcFinished(RpcStub.java:904)
,位于com.google.net.rpc3.client.RpcStub $ RpcCallbackDispatcher.success(RpcStub.java:883)
,位于com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:1130)
,位于com.google.net.rpc3。 impl.client.RpcClientInternalContext.finishRpcAndNotifyApp(RpcClientInternalContext.java:1030)
com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1459)
com.google。 net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel.java:1280)
at com.google.net.rpc3.impl.client.RpcNetChannel.handleResponse(RpcNetChannel.java:2995)
at com.google.net.rpc3.impl.client.RpcNetChannel.messageReceived(RpcNetChannel.java:2731)
,位于com.google.net.rpc3.impl.client.RpcNetChannel.access $ 2900(RpcNetChannel.java:175)
,位于com.google.net.rpc3.impl.client.RpcNetCha请在com.google.net.rpc3.impl.client.RpcChannelTransportData $ TransportCallback.receivedMessage(RpcChannelTransportData.java:669)
处申请$ n $ TransportCallback.receivedMessage(RpcNetChannel.java:3922)
。 net.rpc3.impl.wire.RpcBaseTransport.receivedMessage(RpcBaseTransport.java:457)
at com.google.apphosting.runtime.udrpc.UdrpcTransport $ ClientAdapter.receivedMessage(UdrpcTransport.java:577)
at com.google.apphosting.runtime.udrpc.UdrpcTransport.dispatchPacket(UdrpcTransport.java:386)
,位于com.google.apphosting.runtime.udrpc.UdrpcTransport.readPackets(UdrpcTransport.java:283)
at com.google.apphosting.runtime.udrpc.UdrpcTransport $ 1.run(UdrpcTransport.java:100)
com.google.net.eventmanager.AbstractFutureTask $ Sync.innerRun(AbstractFutureTask.java:260)
com.google.net.eventmanager.AbstractFutureTask.run(AbstractFutureTask.java:121)
com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:59 4)在com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:1011

。在com.google.net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:892)
在com.google.net.eventmanager.WorkerThreadInfo.runWorkerLoop(WorkerThreadInfo.java:161)
在com.google.net.eventmanager.EventManagerImpl $ WorkerThread.run(EventManagerImpl.java:1879)


任何帮助表示赞赏。



AppStat错误堆栈

  @ 2998ms datastore_v3.RunQuery real = 7ms api = 0ms cost = 0 billed_ops = [] 
Stack:
com.google.appengine.tools.appstats.Recorder:276 makeAsyncCall()
com.google.apphosting.api.ApiProxy:199 makeAsyncCall()
com.google。 appengine.api.datastore.DatastoreApiHelper:82 makeAsyncCall()
com.google.appengine.api.datastore.QueryRunnerV3:36 runQuery()
com.google.appengine.api.datastore.PreparedQueryImpl:32 runQuery ()
com .google.appengine.api.datastore.PreparedQueryImpl:61 asQueryResultIterator()
com.googlecode.objectify.impl.engine.QueryEngine $ ChunkingToRefIterator:100< init>()
com.googlecode.objectify。 impl.engine.QueryEngine $ 1:64迭代()
com.googlecode.objectify.util.TranslatingQueryResultIterable:28迭代()
com.googlecode.objectify.util.TranslatingQueryResultIterable:11迭代()
com.googlecode.objectify.util.ResultProxy $ 1:26 translate()
com.googlecode.objectify.util.ResultProxy $ 1:22 translate()
com.googlecode.objectify.util.ResultTranslator:21 nowUncached()
com.googlecode.objectify.util.ResultCache:30 now()
com.googlecode.objectify.util.ResultProxy:52 invoke()
com.sun.proxy。$ Proxy16:164 toArray()
co.gov.fonada.planeacion.mb.ContratoMB:67 fillContratos()

@ 4218ms memcache.Get real = 71ms api = 0ms cost = 0 billed_ops = []
堆栈:
com.google.appengine.tools.appstats.Recorder:276 makeAsyncCall()
com.google.apphosting.api.ApiProxy:199 makeAsyncCall()
com.google.apphosting.api.ApiProxy:138 makeAsyncCall()
com.google.appengine.api.memcache.MemcacheServiceApiHelper:95 makeAsyncCall()
com.google.appengine.api.memcache.AsyncMemcacheServiceImpl:475 doGetAll()
com.google.appengine.api.memcache.AsyncMemcacheServiceImpl:436 getIdentifiables()
com.google .appengine.api.memcache.MemcacheServiceImpl:59 getIdentifiables()
com.googlecode.objectify.cache.EntityMemcache:215 getAll()
com.googlecode.objectify.cache.CachingAsyncDatastoreService:253 get()
com.googlecode.objectify.impl.engine.LoadEngine $ Round:172 fetchPending()
com.googlecode.objectify.impl.engine.LoadEngine $ Round:118 execute()
com.googlecode .objectify.impl.engine.LoadEngine:258执行()
$ com.googlecode.objectify.impl.engine.QueryEngine ChunkingToRefIterator:152 advanceBatch()
com.googlecode.objectify.impl.engine.QueryEngine $ ChunkingToRefIterator :105< init>()
com.googlecode.objectify.impl.engine.QueryEngine $ 1:64 iterator()
com.googlecode.objectify.util.TranslatingQueryResultIterable:28 iterator()
com.googlecode.objectify.util.TranslatingQueryResultIterable:11迭代()
$ com.googlecode.objectify.util.ResultProxy 1:26的翻译()
$ com.googlecode.objectify.util.ResultProxy 1:22 translate()
com.googlecode.objectify.util.ResultTranslator:21 nowUncached()
com.googlecode.objectify.util.ResultCache:30 now()
com.googlecode.objectify.util .ResultProxy:52 invoke()
com.sun.proxy。$ Proxy16:164 toArray()
co.gov.fonada.planeacion.mb.ContratoMB:67 fillContratos()

新编辑:



我在memcache中发现了一个大字符串,用_ahs *键,这应该是一个会话变量。我认为那个变量太大了。该文本包含了一个用于调试的HTML副本以及一系列产品的版权声明。



整个文本是 [clic here]



这是文本的一部分:

 > pppppt6mainAccordion:formPago:dataPagos:modelInputFebrero2016uq〜UQ〜UQ〜ppppuq〜Q〜Q〜Q〜Q〜$ Q%〜Q〜pppppt6mainAccordion:formPago:dataPagos:modelInputFebrero2015uq〜UQ〜UQ〜ppppuq〜Q〜Q〜 !q〜q〜$ q%〜q〜pppppt6mainAccordion:formPago:dataPagos:modelInputFebrero2018uq〜UQ〜UQ〜ppppuq〜q〜q〜q〜q〜$ q%〜q〜pppppt6mainAccordion:formPago:dataPagos:modelInputFebrero2017uq 〜uq〜uq〜ppppuq〜q〜q〜q〜q〜q〜$ q〜%q〜~pppppt%mainAccordion:formPago:dataPagos:ajaxuq〜uq〜uq〜sq〜Ssq〜Ww#{pagoMB.buttonCrear} uq 〜Yq〜[ppxwDB / formContrato.xhtml @ 806,33 actionListener =#{pagoMB.buttonCrear}xsq〜Ww'#{pagoMB.buttonCrear} java.lang.Voiduq〜Yppxppppxxxtfacelets.ui.DebugOutputsr'com.sun.faces .facelets.tag.ui.UIDebug $ 2#E # -xq〜
?@wt
1427384717777 | 9 <! -

不得更改或删除版权声明或此标题。

版权所有(c)1997-2010 Oracle和/或其附属公司。版权所有。

本文档的内容受GNU
通用公共许可证版本2(GPL)或共同开发
和分发许可证( CDDL)(统称为许可证)。除$符合许可证外,您
不得使用此文件。您可以

https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
或packager / legal / LICENSE.txt中获取许可证的副本。请参阅许可证,了解许可证下特定
语言的管理权限和限制。

分发软件时,请在每个
文件中包含此许可证标题通知,并将许可证文件包含在packager / legal / LICENSE.txt中。

GPL类路径例外:
Oracle将此特定文件指定为受许可证
的GPL第2版部分中Oracle提供的Classpath
例外伴随此代码的文件。

修改:
如果适用,在许可证标题下面添加以下内容,括号中括起的
替换为您自己的标识信息:
部分版权[年份] [版权所有者的名称]

贡献者:
如果您希望本文件的版本仅受CDDL或
的管辖, GPL第2版,在[CDDL或GPL
版本2]许可证下添加[Contributor]
选择将此软件包含在此发行版中,表明您的决定。如果您未指定单一选择的许可证,
收款人可以选择将
下的此文件版本分配给CDDL,GPL版本2或将许可证的选择扩展到
如上所述的被许可人。但是,如果您添加GPL第2版代码
并因此选择了GPL版本2许可证,则该选项仅在新代码受版权
持有人的限制时适用



此文件包含以下版权和
许可通知所涵盖的工作:

根据Apache许可证2.0版许可(许可证 );
除非符合许可证,否则您不得使用此文件。
您可以在

处获得许可证副本http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或以书面形式同意,根据许可证分发的软件
是按原样基础,
分发,没有任何形式的明示或暗示保证或条件。
请参阅许可证以了解许可证下特定语言的管理权限和
限制。

- >

<!DOCTYPE html PUBLIC - // W3C // DTD XHTML 1.0 Transitional // ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional。 DTD>
< html xmlns =http://www.w3.org/1999/xhtml>
< head>
< meta http-equiv =Content-Typecontent =text / html; charset = iso-8859-1/>
< title>调试 - /editarContrato.xhtml</title>
< style type =text / css>
body,div,span,td,th,caption {font-family:'Trebuchet MS',Verdana,Arial,Sans-Serif; font-size:small; }
ul,li,pre {padding:0;保证金:0; }
h1 {color:#090; }
h2,h2 span {font-size:large;颜色:#339; }
h2 a {text-decoration:none;颜色:#339; }
.grayBox {padding:8px; margin:10px 0; border:1px solid #CCC; background-color:#f9f9f9; }
#view {color:#090; font-weight:bold; font-size:medium; }
#tree,#vars {display:none; }
code {font-size:medium; }
#tree dl {color:#006; }
#tree dd {margin-top:2px; margin-bottom:2px; }
#tree dt {border:1px solid #DDD;填充:4px; border-left:2px solid#666; font-family:Courier New,Courier,mono; font-size:small; }
.uicText {color:#999; }
table {border:1px solid #CCC;边界崩溃:崩溃; border-spacing:0px;宽度:100%; text-align:left; }
td {border:1px solid #CCC; }
thead tr th {padding:2px;颜色:#030;背景颜色:#F9F9F9; }
tbody tr td {padding:10px 6px; }

使用@BalusC 监听和调试JSF的穷人的调试方法生命周期阶段,我在 END PHASE RENDER_RESPONSE 6 后发现错误。



Still不知道是什么让我的应用程序将这些文件写入存储。



非常感谢任何帮助。

解决方案

1MB限制适用于所有数据存储实体。您需要将您的大型实体细分为更小的块。



请注意,会话由Memcache和Datastore备份,并且它们都具有此个人版的1MB限制实体。确保您放入会话的所有实体都远低于此限制。


I get the following error.

com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.

I am using Objectify 4.0 and not uploading any file. I am using the DataStore for my app, but the only item above 1Mb is a _values blob in _ah_SESSION entity.

The images of the console are in: http://goo.gl/qP7v7U

I dont know how to troubleshoot the issue and even when the error has been asked before, my problem is that I am not using files and I am actually using the datastore.

EDIT: Testing again, it seems to break in a Delete operation. Here's the log.

W 12:37:39.798 /editarContrato.jsf
  com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.
    at com.google.apphosting.utils.runtime.ApiProxyUtils.convertApiError(ApiProxyUtils.java:42)
    at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:497)
    at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:411)
    at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:856)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441)
    at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.runCallback(RpcStub.java:894)
    at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.rpcFinished(RpcStub.java:904)
    at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.success(RpcStub.java:883)
    at com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:1130)
    at com.google.net.rpc3.impl.client.RpcClientInternalContext.finishRpcAndNotifyApp(RpcClientInternalContext.java:1030)
    at com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1459)
    at com.google.net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel.java:1280)
    at com.google.net.rpc3.impl.client.RpcNetChannel.handleResponse(RpcNetChannel.java:2995)
    at com.google.net.rpc3.impl.client.RpcNetChannel.messageReceived(RpcNetChannel.java:2731)
    at com.google.net.rpc3.impl.client.RpcNetChannel.access$2900(RpcNetChannel.java:175)
    at com.google.net.rpc3.impl.client.RpcNetChannel$TransportCallback.receivedMessage(RpcNetChannel.java:3922)
    at com.google.net.rpc3.impl.client.RpcChannelTransportData$TransportCallback.receivedMessage(RpcChannelTransportData.java:669)
    at com.google.net.rpc3.impl.wire.RpcBaseTransport.receivedMessage(RpcBaseTransport.java:457)
    at com.google.apphosting.runtime.udrpc.UdrpcTransport$ClientAdapter.receivedMessage(UdrpcTransport.java:577)
    at com.google.apphosting.runtime.udrpc.UdrpcTransport.dispatchPacket(UdrpcTransport.java:386)
    at com.google.apphosting.runtime.udrpc.UdrpcTransport.readPackets(UdrpcTransport.java:283)
    at com.google.apphosting.runtime.udrpc.UdrpcTransport$1.run(UdrpcTransport.java:100)
    at com.google.net.eventmanager.AbstractFutureTask$Sync.innerRun(AbstractFutureTask.java:260)
    at com.google.net.eventmanager.AbstractFutureTask.run(AbstractFutureTask.java:121)
    at com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:594)
    at com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:1011)
    at com.google.net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:892)
    at com.google.net.eventmanager.WorkerThreadInfo.runWorkerLoop(WorkerThreadInfo.java:161)
    at com.google.net.eventmanager.EventManagerImpl$WorkerThread.run(EventManagerImpl.java:1879)
F 12:37:39.801 Uncaught exception from servlet
  com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.
    at com.google.apphosting.utils.runtime.ApiProxyUtils.convertApiError(ApiProxyUtils.java:42)
    at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:497)
    at com.google.apphosting.runtime.ApiProxyImpl$AsyncApiFuture.success(ApiProxyImpl.java:411)
    at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:856)
    at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444)
    at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
    at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
    at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441)
    at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.runCallback(RpcStub.java:894)
    at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.rpcFinished(RpcStub.java:904)
    at com.google.net.rpc3.client.RpcStub$RpcCallbackDispatcher.success(RpcStub.java:883)
    at com.google.net.rpc3.impl.client.RpcClientInternalContext.runCallbacks(RpcClientInternalContext.java:1130)
    at com.google.net.rpc3.impl.client.RpcClientInternalContext.finishRpcAndNotifyApp(RpcClientInternalContext.java:1030)
    at com.google.net.rpc3.impl.client.RpcNetChannel.afterFinishingActiveRpc(RpcNetChannel.java:1459)
    at com.google.net.rpc3.impl.client.RpcNetChannel.finishRpc(RpcNetChannel.java:1280)
    at com.google.net.rpc3.impl.client.RpcNetChannel.handleResponse(RpcNetChannel.java:2995)
    at com.google.net.rpc3.impl.client.RpcNetChannel.messageReceived(RpcNetChannel.java:2731)
    at com.google.net.rpc3.impl.client.RpcNetChannel.access$2900(RpcNetChannel.java:175)
    at com.google.net.rpc3.impl.client.RpcNetChannel$TransportCallback.receivedMessage(RpcNetChannel.java:3922)
    at com.google.net.rpc3.impl.client.RpcChannelTransportData$TransportCallback.receivedMessage(RpcChannelTransportData.java:669)
    at com.google.net.rpc3.impl.wire.RpcBaseTransport.receivedMessage(RpcBaseTransport.java:457)
    at com.google.apphosting.runtime.udrpc.UdrpcTransport$ClientAdapter.receivedMessage(UdrpcTransport.java:577)
    at com.google.apphosting.runtime.udrpc.UdrpcTransport.dispatchPacket(UdrpcTransport.java:386)
    at com.google.apphosting.runtime.udrpc.UdrpcTransport.readPackets(UdrpcTransport.java:283)
    at com.google.apphosting.runtime.udrpc.UdrpcTransport$1.run(UdrpcTransport.java:100)
    at com.google.net.eventmanager.AbstractFutureTask$Sync.innerRun(AbstractFutureTask.java:260)
    at com.google.net.eventmanager.AbstractFutureTask.run(AbstractFutureTask.java:121)
    at com.google.net.eventmanager.EventManagerImpl.runTask(EventManagerImpl.java:594)
    at com.google.net.eventmanager.EventManagerImpl.internalRunWorkerLoop(EventManagerImpl.java:1011)
    at com.google.net.eventmanager.EventManagerImpl.runWorkerLoop(EventManagerImpl.java:892)
    at com.google.net.eventmanager.WorkerThreadInfo.runWorkerLoop(WorkerThreadInfo.java:161)
    at com.google.net.eventmanager.EventManagerImpl$WorkerThread.run(EventManagerImpl.java:1879)

Any help appreciated.

The AppStat error stack

@2998ms datastore_v3.RunQuery real=7ms api=0ms cost=0 billed_ops=[]
Stack:
  com.google.appengine.tools.appstats.Recorder:276 makeAsyncCall()
  com.google.apphosting.api.ApiProxy:199 makeAsyncCall()
  com.google.appengine.api.datastore.DatastoreApiHelper:82 makeAsyncCall()
  com.google.appengine.api.datastore.QueryRunnerV3:36 runQuery()
  com.google.appengine.api.datastore.PreparedQueryImpl:32 runQuery()
  com.google.appengine.api.datastore.PreparedQueryImpl:61 asQueryResultIterator()
  com.googlecode.objectify.impl.engine.QueryEngine$ChunkingToRefIterator:100 <init>()
  com.googlecode.objectify.impl.engine.QueryEngine$1:64 iterator()
  com.googlecode.objectify.util.TranslatingQueryResultIterable:28 iterator()
  com.googlecode.objectify.util.TranslatingQueryResultIterable:11 iterator()
  com.googlecode.objectify.util.ResultProxy$1:26 translate()
  com.googlecode.objectify.util.ResultProxy$1:22 translate()
  com.googlecode.objectify.util.ResultTranslator:21 nowUncached()
  com.googlecode.objectify.util.ResultCache:30 now()
  com.googlecode.objectify.util.ResultProxy:52 invoke()
  com.sun.proxy.$Proxy16:164 toArray()
  co.gov.fonada.planeacion.mb.ContratoMB:67 fillContratos()

 @4218ms memcache.Get real=71ms api=0ms cost=0 billed_ops=[]
Stack:
  com.google.appengine.tools.appstats.Recorder:276 makeAsyncCall()
  com.google.apphosting.api.ApiProxy:199 makeAsyncCall()
  com.google.apphosting.api.ApiProxy:138 makeAsyncCall()
  com.google.appengine.api.memcache.MemcacheServiceApiHelper:95 makeAsyncCall()
  com.google.appengine.api.memcache.AsyncMemcacheServiceImpl:475 doGetAll()
  com.google.appengine.api.memcache.AsyncMemcacheServiceImpl:436 getIdentifiables()
  com.google.appengine.api.memcache.MemcacheServiceImpl:59 getIdentifiables()
  com.googlecode.objectify.cache.EntityMemcache:215 getAll()
  com.googlecode.objectify.cache.CachingAsyncDatastoreService:253 get()
  com.googlecode.objectify.impl.engine.LoadEngine$Round:172 fetchPending()
  com.googlecode.objectify.impl.engine.LoadEngine$Round:118 execute()
  com.googlecode.objectify.impl.engine.LoadEngine:258 execute()
  com.googlecode.objectify.impl.engine.QueryEngine$ChunkingToRefIterator:152 advanceBatch()
  com.googlecode.objectify.impl.engine.QueryEngine$ChunkingToRefIterator:105 <init>()
  com.googlecode.objectify.impl.engine.QueryEngine$1:64 iterator()
  com.googlecode.objectify.util.TranslatingQueryResultIterable:28 iterator()
  com.googlecode.objectify.util.TranslatingQueryResultIterable:11 iterator()
  com.googlecode.objectify.util.ResultProxy$1:26 translate()
  com.googlecode.objectify.util.ResultProxy$1:22 translate()
  com.googlecode.objectify.util.ResultTranslator:21 nowUncached()
  com.googlecode.objectify.util.ResultCache:30 now()
  com.googlecode.objectify.util.ResultProxy:52 invoke()
  com.sun.proxy.$Proxy16:164 toArray()
  co.gov.fonada.planeacion.mb.ContratoMB:67 fillContratos()

New Edit:

I've discovered a big string in memcache, with _ahs* key, which is supposed to be a session variable. I think thats the variable thats getting too big. The text includes a copy of the HTML for "debug" and copyright disclaimers of a bunch of products.

The whole text is [clic here]

This is part of the text:

> pppppt6mainAccordion:formPago:dataPagos:modelInputFebrero2016uq~uq~uq~ppppuq~q~q~ �q~!q~$q~%q~    �pppppt6mainAccordion:formPago:dataPagos:modelInputFebrero2015uq~uq~uq~ppppuq~q~q~  �q~!q~$q~%q~    �pppppt6mainAccordion:formPago:dataPagos:modelInputFebrero2018uq~uq~uq~ppppuq~q~q~  �q~!q~$q~%q~    �pppppt6mainAccordion:formPago:dataPagos:modelInputFebrero2017uq~uq~uq~ppppuq~q~q~  �q~!q~$q~%q~    �pppppt%mainAccordion:formPago:dataPagos:ajaxuq~uq~uq~sq~Ssq~Ww#{pagoMB.buttonCrear}uq~Yq~[ppxwDB/formContrato.xhtml @806,33 actionListener="#{pagoMB.buttonCrear}"xsq~Ww'#{pagoMB.buttonCrear}java.lang.Voiduq~Yppxppppxxxtfacelets.ui.DebugOutputsr'com.sun.faces.facelets.tag.ui.UIDebug$2#E�#�  -xq~
?@wt
1427384717777|9<!--

    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.

    Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.

    The contents of this file are subject to the terms of either the GNU
    General Public License Version 2 only ("GPL") or the Common Development
    and Distribution License("CDDL") (collectively, the "License").  You
    may not use this file except in compliance with the License.  You can
    obtain a copy of the License at
    https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
    or packager/legal/LICENSE.txt.  See the License for the specific
    language governing permissions and limitations under the License.

    When distributing the software, include this License Header Notice in each
    file and include the License file at packager/legal/LICENSE.txt.

    GPL Classpath Exception:
    Oracle designates this particular file as subject to the "Classpath"
    exception as provided by Oracle in the GPL Version 2 section of the License
    file that accompanied this code.

    Modifications:
    If applicable, add the following below the License Header, with the fields
    enclosed by brackets [] replaced by your own identifying information:
    "Portions Copyright [year] [name of copyright owner]"

    Contributor(s):
    If you wish your version of this file to be governed by only the CDDL or
    only the GPL Version 2, indicate your decision by adding "[Contributor]
    elects to include this software in this distribution under the [CDDL or GPL
    Version 2] license."  If you don't indicate a single choice of license, a
    recipient has the option to distribute your version of this file under
    either the CDDL, the GPL Version 2 or to extend the choice of license to
    its licensees as provided above.  However, if you add GPL Version 2 code
    and therefore, elected the GPL Version 2 license, then the option applies
    only if the new code is made subject to such option by the copyright
    holder.


    This file incorporates work covered by the following copyright and
    permission notice:

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Debug - /editarContrato.xhtml</title>
<style type="text/css">
body, div, span, td, th, caption { font-family: 'Trebuchet MS', Verdana, Arial, Sans-Serif; font-size: small; }
ul, li, pre { padding: 0; margin: 0; }
h1 { color: #090; }
h2, h2 span { font-size: large; color: #339; }
h2 a { text-decoration: none; color: #339; }
.grayBox { padding: 8px; margin: 10px 0; border: 1px solid #CCC; background-color: #f9f9f9;  }
#view { color: #090; font-weight: bold; font-size: medium; }
#tree, #vars { display: none; }
code { font-size: medium; }
#tree dl { color: #006; }
#tree dd { margin-top: 2px; margin-bottom: 2px; }
#tree dt { border: 1px solid #DDD; padding: 4px; border-left: 2px solid #666; font-family: "Courier New", Courier, mono; font-size: small; }
.uicText { color: #999;  }
table { border: 1px solid #CCC; border-collapse: collapse; border-spacing: 0px; width: 100%; text-align: left; }
td { border: 1px solid #CCC; }
thead tr th { padding: 2px; color: #030; background-color: #F9F9F9; }
tbody tr td { padding: 10px 6px; }

Using @BalusC "poor man's debugging" approach for Listen and debug JSF lifecycle phases, I found out the error after END PHASE RENDER_RESPONSE 6.

Still dont know whats making my app to write these files to the storage.

Any help greatly appreciated.

解决方案

1MB limit applies to all Datastore entities. You need to break down your large entity into smaller pieces.

Note that session is backed up by both Memcache and the Datastore, and both of them have this 1MB limit for individual entities. Make sure that all entities you put in a session are well below this limit.

这篇关于API调用datastore_v3.Put()的请求太大。使用Objectify(DataStore)而不上传文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆