Für eine kurze Zeit heute, mein Code in Flexible Environment "compat" mit Google Cloud Datastore API ausgeführt java.net.SocketTimeoutException: Timeout beim Abrufen der URL beim Einfügen eines Elements in Datastore in einem anderen GAE-Projekt.Warum erstellt Datastore beim Abrufen der URL Timeout?
Außerdem konnte Dataflow zu diesem Zeitpunkt keine Elemente einfügen. fast sicher das gleiche Problem.
Dies tritt auch bei einfachen Schlüsselabfragen auf, so dass es kein Problem mit schweren Daten ist.
Davor und danach wurden viele andere Daten korrekt eingefügt; einschließlich einer Wiederholung dieser Daten.
Googling der Fehler schlägt vor, dass es durch Ausfallzeiten in der Google Cloud verursacht werden kann, aber das Google Cloud Status Dashboard grün angezeigt wird.
Was hat das verursacht? Wie können wir es in Zukunft vermeiden?
com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities run: ERROR in CopyEntities(commerceDocs/RFQ) java.lang.RuntimeException: com.google.cloud.datastore.DatastoreException: I/O error at
com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities.retryIfAllowed(GCloudApiDSBackup.java:963) at
com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities.putEntities(GCloudApiDSBackup.java:857) at
com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities.retryIfAllowed(GCloudApiDSBackup.java:959) at
com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities.putEntities(GCloudApiDSBackup.java:857) at
com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities.putEntitiesByParts(GCloudApiDSBackup.java:991) at
com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities.run(GCloudApiDSBackup.java:801) 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: I/O error at
com.google.cloud.datastore.spi.DefaultDatastoreRpc.translate(DefaultDatastoreRpc.java:105) at
com.google.cloud.datastore.spi.DefaultDatastoreRpc.commit(DefaultDatastoreRpc.java:133) at
com.google.cloud.datastore.DatastoreImpl$4.call(DatastoreImpl.java:390) at
com.google.cloud.datastore.DatastoreImpl$4.call(DatastoreImpl.java:387) at
com.google.cloud.RetryHelper.doRetry(RetryHelper.java:179) at
com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:244) at
com.google.cloud.datastore.DatastoreImpl.commit(DatastoreImpl.java:386) at
com.google.cloud.datastore.DatastoreImpl.commitMutation(DatastoreImpl.java:380) at
com.google.cloud.datastore.DatastoreImpl.put(DatastoreImpl.java:340) at
com.freightos.backup.datastore.gcloudapi.GCloudApiDSBackup$CopyEntities.putEntities(GCloudApiDSBackup.java:836) ... 9 more Caused by: com.google.datastore.v1.client.DatastoreException: I/O error, code=UNAVAILABLE at
com.google.datastore.v1.client.RemoteRpc.makeException(RemoteRpc.java:126) at
com.google.datastore.v1.client.RemoteRpc.call(RemoteRpc.java:95) at
com.google.datastore.v1.client.Datastore.commit(Datastore.java:84) at
com.google.cloud.datastore.spi.DefaultDatastoreRpc.commit(DefaultDatastoreRpc.java:131) ... 17 more Caused by: java.net.SocketTimeoutException: Timeout while fetching URL: https://datastore.googleapis.com/v1/projects/freightos-prod-backup2:commit at
com.google.appengine.api.urlfetch.URLFetchServiceImpl.convertApplicationException(URLFetchServiceImpl.java:173) at
com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:45) 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) ... 19 more
Ich bin mit \t \t \t com.google.cloud \t \t \t gcloud-java-datastore \t \t \t 0.2.8 Aber anscheinend werden diese 2 Maven-Abhängigkeiten stattdessen benötigt. \t \t \t \t com.google.cloud \t \t \t Google-cloud \t \t \t 0.8.0 \t \t ... und ... \t \t \t \t \t com.google.auth \t \t \t google-auth-Bibliothek-oauth2-http \t \t \t 0.6.0 \t \t Ist das richtig? –
Mit diesen Bibliotheken wird der Code kompiliert. Ich habe die veralteten Methoden geändert. (Siehe http://pastebin.com/eZNmYmWw für formatierten Code und StackTrace.) Ich bekomme java.lang.NoSuchMethodError: com.google.datastore.v1.Entity.getPropertiesMap() Ljava/util/Map; bei diesem Code: QueryResults Ergebnisse = Datenspeicher.Run (Abfrage); while (results.hasNext()) {... –
Ist es möglich, dass eine ältere Version des 'datastore-v1-protos' auch auf dem Klassenpfad existiert? Die 'getPropertiesMap()' Methode wurde in '1.2.0' hinzugefügt (wäre also nicht in' 1.0.0' oder '1.0.1' enthalten). –