Мое приложение - это приложение Java, работающее в стандартной среде GAE. Внезапно он заявил, что выдает ошибку, связанную с Memcache ( Ошибка службы в memcache ) при каждом обращении к Google DataStore. Это временно исчезает, когда я повторно развертываю новую версию, но возвращается через несколько часов. Используемая среда выполнения Java - 8, а Google SDK - 1.9.71.
Я пытался найти решение на всех форумах, и самое близкое, что я нашел, было Ошибка службы в memcache с Java Google App Engine Standard в случайные периоды времени . Однако, краткое изложение предлагаемого решения:
- Ошибка - это просто информация / предупреждение , и если кэш пропущен, код попадет в хранилище данных и выберет значение. Но дело обстоит не так, это фактически не позволяет некоторое планирование рабочих мест.
- Старая версия из Objectify может вызывать ошибку, но я использую 4.1.3, которую рекомендуется использовать - версии 3.x и 4.0 приводили к ошибкам для некоторых пользователей
- Не используйте Memcache и используйте DataStore напрямую. Я не уверен, насколько практичным / трудоемким является изменение кода стабильного приложения здесь, на уровне БД.
Отслеживание стека:
com.google.appengine.api.memcache.LogAndContinueErrorHandler handleServiceError: Service error in memcache (LogAndContinueErrorHandler.java:52)
com.google.appengine.api.memcache.MemcacheServiceException: Memcache getIdentifiables: exception getting multiple keys
at com.google.appengine.api.memcache.MemcacheServiceApiHelper$RpcResponseHandler.handleApiProxyException(MemcacheServiceApiHelper.java:80)
at com.google.appengine.api.memcache.MemcacheServiceApiHelper$RpcResponseHandler.handleApiProxyException(MemcacheServiceApiHelper.java:64)
at com.google.appengine.api.memcache.MemcacheServiceApiHelper$1.absorbParentException(MemcacheServiceApiHelper.java:129)
at com.google.appengine.api.utils.FutureWrapper.handleParentException(FutureWrapper.java:56)
at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:95)
at com.google.appengine.api.memcache.MemcacheServiceImpl.quietGet(MemcacheServiceImpl.java:28)
at com.google.appengine.api.memcache.MemcacheServiceImpl.getIdentifiables(MemcacheServiceImpl.java:61)
at com.googlecode.objectify.cache.KeyMemcacheService.getIdentifiables(KeyMemcacheService.java:75)
at com.googlecode.objectify.cache.EntityMemcache.getAll(EntityMemcache.java:222)
at com.googlecode.objectify.cache.CachingAsyncDatastoreService.get(CachingAsyncDatastoreService.java:253)
at com.googlecode.objectify.impl.LoadEngine.fetch(LoadEngine.java:203)
at com.googlecode.objectify.impl.Round.fetchPending(Round.java:130)
at com.googlecode.objectify.impl.Round.execute(Round.java:107)
at com.googlecode.objectify.impl.LoadEngine.execute(LoadEngine.java:94)
at com.googlecode.objectify.impl.Round$1.nowUncached(Round.java:72)
at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30)
at com.googlecode.objectify.LoadResult.now(LoadResult.java:25)
at MyPackage.impl.ObjectifyGenericDaoImpl.get(ObjectifyGenericDaoImpl.java:76)
at MyPackage.Method2(ScheduleServiceImpl.java:74)
at MyPackage.Method1(ScheduleController.java:84)
at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)