「バックエンド」Google App Engine フレキシブル環境インスタンスのバックグラウンド スレッドで Google Cloud API for Datastore を使用して単純なクエリを実行すると、数秒間複数回クエリを試行すると、次の例外が発生しました。
An error occurred parsing (locally or remotely) the arguments to URLFETCH.Fetch()
(スタックトレースについては以下を参照してください。)
別のエラーと同時に発生しました
com.google.apphosting.vmruntime.VmApiProxyDelegate convertApiResponseRpcErrorToException: RPC failed, API=urlfetch.Fetch : BAD_REQUEST : There is no active request context for this API call.
例外の直前に、ログが表示されます
com.google.apphosting.vmruntime.VmRequestThreadFactory interruptRequestThreads: Request thread Thread-16 is still alive, forcing interrupt.
と
... convertApiResponseRpcErrorToException: RPC failed, API=urlfetch.Fetch : CANCELLED
これは、ウェブ リクエストの 60 秒の制限など、Google App Engine のタイムアウトに達したことを示しています。ログを見ると、それは真実ではないようです。ただし、そのクエリは backgroundThreadFactory で作成されたバックグラウンド スレッドで実行されます。
これは、同じデータに対して以前と後で実行した Java コードであり、そのような問題はありませんでした。そのため、実行時に何か特定のことが起こりました。
この問題の原因は何ですか?
スタックトレース:
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: com.google.cloud.datastore.DatastoreException: com.google.apphosting.api.ApiProxy$ArgumentException: An error occurred parsing (locally or remotely) the arguments to URLFETCH.Fetch(). at com.google.cloud.datastore.DatastoreException.translateAndThrow(DatastoreException.java:66) at com.google.cloud.datastore.DatastoreImpl.runQuery(DatastoreImpl.java:97) at com.google.cloud.datastore.QueryResultsImpl.sendRequest(QueryResultsImpl.java:73) at com.google.cloud.datastore.QueryResultsImpl.<init>(QueryResultsImpl.java:57) at com.google.cloud.datastore.DatastoreImpl.run(DatastoreImpl.java:82) at com.google.cloud.datastore.DatastoreImpl.run(DatastoreImpl.java:73) at com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup.loadEntity(GCloudApiDSBackup.java:692) at com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities.loadOneEntity(GCloudApiDSBackup.java:1104) ... 7 more Caused by: com.google.apphosting.api.ApiProxy$ArgumentException: An error occurred parsing (locally or remotely) the arguments to URLFETCH.Fetch(). at com.google.apphosting.vmruntime.VmApiProxyDelegate.convertApiResponseRpcErrorToException(VmApiProxyDelegate.java:397) at com.google.apphosting.vmruntime.VmApiProxyDelegate.convertRemoteError(VmApiProxyDelegate.java:341) at com.google.apphosting.vmruntime.VmApiProxyDelegate.runSyncCall(VmApiProxyDelegate.java:187) at com.google.apphosting.vmruntime.VmApiProxyDelegate.makeApiCall(VmApiProxyDelegate.java:155) at com.google.apphosting.vmruntime.VmApiProxyDelegate.makeSyncCallWithTimeout(VmApiProxyDelegate.java:143) at com.google.apphosting.vmruntime.VmApiProxyDelegate.makeSyncCall(VmApiProxyDelegate.java:132) at com.google.apphosting.vmruntime.VmApiProxyDelegate.makeSyncCall(VmApiProxyDelegate.java:75) at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:118) at com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:40) at com.google.api.client.extensions.appengine.http.UrlFetchRequest.execute(UrlFetchRequest.java:74) at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981) at com.google.datastore.v1.client.RemoteRpc.call(RemoteRpc.java:87) at com.google.datastore.v1.client.Datastore.runQuery(Datastore.java:108) at com.google.cloud.datastore.spi.DefaultDatastoreRpc.runQuery(DefaultDatastoreRpc.java:158) at com.google.cloud.datastore.DatastoreImpl$1.call(DatastoreImpl.java:93) at com.google.cloud.datastore.DatastoreImpl$1.call(DatastoreImpl.java:89) at com.google.cloud.RetryHelper.doRetry(RetryHelper.java:179) at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:244) at com.google.cloud.datastore.DatastoreImpl.runQuery(DatastoreImpl.java:88) ... 13 more