Google App Engine `currentEnvironment` имеет значение null (` ApiProxy.getCurrentEnvironment () `) - PullRequest
0 голосов
/ 01 марта 2020

У меня есть стандартная среда GAE, работающая с ktor. Теперь я пытаюсь получить доступ к sql RESTApi для импорта из GAE, и поэтому мне нужен токен доступа ...

При попытке получить этот токен с помощью AppIdentityServiceFactory.getAppIdentityService().getAccessToken создается исключение, указывающее на ApiProxy.getCurrentEnvironment() NULL, что я проверил: это ... (похожая проблема с getAccessTokenUncached)

У меня создается впечатление, что это как-то связано с Ktor, так как я нашел здесь что application.conf от ktor может иметь некоторое влияние на настройку среды GAE:

Вам нужно будет удалить блок развертывания из application.conf, в противном случае при запуске в Google App Engine сервлет не будет правильно настроена среда, в результате чего API Google Cloud не будет работать.

Буду признателен за любую помощь

com.google.apphosting.api.ApiProxy$CallNotFoundException: Can't make API call app_identity_service.GetAccessToken in a thread that is neither the original request thread nor a thread created by ThreadManager
    at com.google.apphosting.api.ApiProxy$CallNotFoundException.foreignThread(ApiProxy.java:847)
    at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:124)
    at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:75)
    at com.google.appengine.api.appidentity.AppIdentityServiceImpl.getAccessTokenUncached(AppIdentityServiceImpl.java:233)
    at com.moregames.playspot.service.DataImportManager$token$2.invoke(DataImportManager.kt:47)
    at com.moregames.playspot.service.DataImportManager$token$2.invoke(DataImportManager.kt:36)
    at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
    at com.moregames.playspot.service.DataImportManager.getToken(DataImportManager.kt)
    at com.moregames.playspot.service.DataImportManager.triggerRevenuesImport(DataImportManager.kt:124)
    at com.moregames.playspot.service.DataImportManager.triggerRevenuesImportAndWaitForResponse(DataImportManager.kt:103)
    at com.moregames.playspot.service.DataImportManager.processLoad(DataImportManager.kt:78)
    at com.moregames.playspot.service.DataImportManager$processLoad$1.invokeSuspend(DataImportManager.kt)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:313)
    at kotlinx.coroutines.DispatchedCoroutine.afterResume(Builders.common.kt:254)
    at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(PipelineContext.kt:216)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(PipelineContext.kt:172)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(PipelineContext.kt:67)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(PipelineContext.kt:122)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(PipelineContext.kt:216)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(PipelineContext.kt:172)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(PipelineContext.kt:67)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(PipelineContext.kt:122)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(PipelineContext.kt:216)
    at io.ktor.util.pipeline.SuspendFunctionGun.loop(PipelineContext.kt:172)
    at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(PipelineContext.kt:67)
    at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(PipelineContext.kt:122)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:561)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:727)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:667)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:655)
...