在我们的场景中我们使用带有后端的拉队列,并且我们的后端尝试在一些固定的时间间隔之后从我们的拉队列中租用任务,并且如果没有任务,它什么都不做,如果有的话,那些就被处理了.昨天我们在我们的系统中得到了这个TransientFailureException,当我的servlet尝试从pull队列中租用任务时,这正好发生了.并且异常一直持续到我们停止后端为止.
我们的代码片段 -
{
Boolean leasedTaskFromFastQueue = true;
Queue fastQueue = QueueFactory.getQueue("FastQueue");
Queue slowQueue = QueueFactory.getQueue("SlowQueue");
List<TaskHandle> tasks = fastQueue.leaseTasks(
3600, TimeUnit.SECONDS, 1);
TaskHandle taskHandle = null;
if(tasks.size() > 0) {
taskHandle = tasks.get(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我们在从fastQueue租用任务的行上得到错误,这是一个拉取队列
<queue>
<name>FastQueue</name>
<mode>pull</mode>
</queue>
Run Code Online (Sandbox Code Playgroud)
我也粘贴了我的错误跟踪,万一有帮助
com.google.appengine.api.taskqueue.TransientFailureException:
at com.google.appengine.api.taskqueue.QueueApiHelper.translateError(QueueApiHelper.java:79)
at com.google.appengine.api.taskqueue.QueueApiHelper.translateError(QueueApiHelper.java:139)
at com.google.appengine.api.taskqueue.QueueApiHelper.makeSyncCall(QueueApiHelper.java:53)
at com.google.appengine.api.taskqueue.QueueImpl.leaseTasksInternal(QueueImpl.java:709)
at com.google.appengine.api.taskqueue.QueueImpl.leaseTasks(QueueImpl.java:731)
at com.implementhit.advancedsupport.server.queue.Backend.doGet(Backend.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.bitdual.appengine.tools.datastore.server.NamespaceFilter.doFilter(NamespaceFilter.java:96)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:102)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at …Run Code Online (Sandbox Code Playgroud)