2012-06-25 21 views
0

응용 프로그램의 풀 대기열에서 작업을 임대하려고하면 아래 오류가 발생합니다. 이전에 내 코드에서 이런 일이 발생하지 않았으므로 뭔가가 변경되었습니다. 나는이 문제가 스레딩 문제라고 의심한다 -이 호출은 별도의 스레드 (ThreadManager.createThreadForCurrentRequest을 사용하여 생성됨)에서 이루어졌다 - 최근에는 허용되지 않았다?오류 임대 작업 가져 오기

uk.org.jaggard.myapp.BlahBlahBlahRunnable run: Exception leasing tasks. Already tried 0 times. 
com.google.apphosting.api.ApiProxy$CancelledException: The API call taskqueue.QueryAndOwnTasks() was explicitly cancelled. 
    at com.google.apphosting.runtime.ApiProxyImpl.doSyncCall(ApiProxyImpl.java:218) 
    at com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:68) 
    at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:182) 
    at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:180) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:180) 
    at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:68) 
    at com.google.appengine.tools.appstats.Recorder.makeSyncCall(Recorder.java:323) 
    at com.googlecode.objectify.cache.TriggerFutureHook.makeSyncCall(TriggerFutureHook.java:154) 
    at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:105) 
    at com.google.appengine.api.taskqueue.QueueApiHelper.makeSyncCall(QueueApiHelper.java:44) 
    at com.google.appengine.api.taskqueue.QueueImpl.leaseTasksInternal(QueueImpl.java:709) 
    at com.google.appengine.api.taskqueue.QueueImpl.leaseTasks(QueueImpl.java:731) 
    at uk.org.jaggard.myapp.BlahBlahBlahRunnable.run(BlahBlahBlahRunnable.java:53) 
    at com.google.apphosting.runtime.ApiProxyImpl$CurrentRequestThreadFactory$1$1.run(ApiProxyImpl.java:997) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.google.apphosting.runtime.ApiProxyImpl$CurrentRequestThreadFactory$1.run(ApiProxyImpl.java:994) 
    at java.lang.Thread.run(Thread.java:679) 
    at com.google.apphosting.runtime.ApiProxyImpl$CurrentRequestThreadFactory$2$1.run(ApiProxyImpl.java:1031) 

답변

0

나는 가 포함됩니다 응용 프로그램의 로그에 경고를 의심 "스레드가 CancelledException를 던지고, 중단되었습니다." Java의 InterruptedException에 대해서는 http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html 및 "Java 동시성의 실제"에서 논의합니다.

+0

InterruptedException을받지 못했고 그것에 대한 경고가 없지만 개발자 서버에서 InterruptedException을 얻었 기 때문에 이것이 문제라는 것이 맞습니다. 그러나이 질문에 대답하지 않습니다 - 왜 Google App Engine은'leaseTasks' 호출이있을 때마다이 예외를 던집니까? – mjaggard