Управляемая проблема с ВМ? Часто встречающийся журнал ошибок о VmApiProxyDelegate (с использованием API хранилища данных, API TaskQueue) в экземпляре управляемой виртуальной машины AppEngine
Я использую Google AppEngine Managed VM/Java с марта 2015 года. Все работает хорошо. Но после сентября, октября 2015 года, я заметил, что часто вижу журнал ошибок "com.google.apphosting.vmruntime.VmApiProxyDelegate" в журнале экземпляров управляемой виртуальной машины.
2 группы журнала ошибок я заметил.
Первый связан с операцией хранилища данных на экземпляре управляемой виртуальной машины. Это происходит на
- datastore_v3.Get().
- datastore_v3.RunQuery ()
- datastore_v3.Put ()
- memcache.Get ().
Пример стека трассировки, который я видел в журнале, приведен ниже... (пример ниже предназначен для datastore_v3.Put ())
com.google.apphosting.vmruntime.VmApiProxyDelegate runSyncCall: ошибка ввода-вывода HTTP ApiProxy для datastore_v3.Put: истекло время ожидания
com.google.apphosting.api.ApiProxy$RPCFailedException: удаленный RPC для сервера приложений не выполнен для вызова datastore_v3.Get(). по адресу com.google.apphosting.vmruntime.VmApiProxyDelegate.runSyncCall(VmApiProxyDelegate.java:182) по адресу com.google.apphosting.vmruntime.VmApiProxyDelegate.makeApiCall(VmApiProxyDelegate.com.pi.g.v.tv.weg.av.tv.tv.tv. $000(VmApiProxyDelegate.java:47) по адресу com.google.apphosting.vmruntime.VmApiProxyDelegate$MakeSyncCall.call(VmApiProxyDelegate.java:375) по адресу com.google.apphosting.vmruntime.VmApiProxy.aDelegatep () в java.util.concurrent.FutureTask.run(FutureTask.java:262) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExcecutor:615) на java.lang.Thread.run(Thread.java:745)
Итак, когда эта ошибка произошла, на уровне приложения (мой код) я получил RPCFailedException, но сейчас я не обработал его с помощью механизма повторных попыток (я использую механизм повторных попыток только для ConcurrentModificationException с API App Engine Datastore)
Вторая группа журнала ошибок - об API TaskQueue на управляемой виртуальной машине.
Я получил сообщение об ошибке...
com.google.apphosting.vmruntime.VmApiProxyDelegate runSyncCall: тело ошибки: ошибка RPC: /StubbyService.Send to (неизвестно): APP_ERROR(2)
При трассировке подробная трассировка стека...
com.wat_suttiwat.batchengine.job.PushNotificationTaskExecutor executeTask: удаленный RPC для сервера приложений не выполнен для вызова taskqueue.QueryAndOwnTasks(). com.google.apphosting.api.ApiProxy$RPCFailedException: удаленный RPC для сервера приложений не выполнен для вызова taskqueue.QueryAndOwnTasks (). по адресу com.google.apphosting.vmruntime.VmApiProxyDelegate.runSyncCall(VmApiProxyDelegate.java:161) по адресу com.google.apphosting.vmruntime.VmApiProxyDelegate.makeApiCall(VmApiProxyDelegate. com.xyg.v.tv.tv.tv. $000(VmApiProxyDelegate.java:47) по адресу com.google.apphosting.vmruntime.VmApiProxyDelegate$MakeSyncCall.call(VmApiProxyDelegate.java:375) по адресу com.google.apphosting.vmruntime.VmApiProxy.aDelegatep () в java.util.concurrent.FutureTask.run(FutureTask.java:262) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExcecutor:615) на java.lang.Thread.run(Thread.java:745)
Исключение "RPCFailedException" возникло на уровне приложения (как в первом случае). И я заметил, что интерфейсный экземпляр Google AppEngine (а не экземпляр managed-vm) работает как обычно без ошибок.
Итак, мой вопрос
Должен ли я добавить механизм повтора для RPCFailedException? Полезно ли добавлять повтор? Я не вижу никакой документации из документа Google AppEngine по этому вопросу.
У кого-нибудь есть такие же проблемы со мной? Если да, помогите проголосовать за проблему на этом трекере (# 12393): https://code.google.com/p/googleappengine/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log&groupby=&sort=&id=12393
Если у вас есть какие-либо обходные пути, пожалуйста, поделитесь.
Спасибо