1

Ich bekomme manchmal die folgende Ausnahme auf put(). (Obwohl im Allgemeinen, mein Code funktioniert gut.)Wie können wir verhindern, dass Google Cloud API Ausnahmen verschluckt?

Meine beste Vermutung ist, dass Datenspeicher intern stößt einen Indizierungsfehler (die gibt es no tools for diagnosing), aber ich bin nicht sicher, weil der Fehler mit einem Protobuf Parsen Problem geschluckt wird.

In another case, ein ähnliches Schlucken von Ausnahmen, mit Protobuf Parsing Nachricht, wurde durch einen Fehler in Dataflow eigenen Datastore API verursacht, und das Dataflow-Team behoben, - aber hier verwende ich nicht Dataflow überhaupt.

Wie kann ich lernen, was das verursacht?

Verwenden von Google Cloud API 0.28.

... at com.google.cloud.datastore.DatastoreImpl.put(DatastoreImpl.java:340) 
    at com.google.cloud.datastore.DatastoreImpl.commitMutation(DatastoreImpl.java:380) 
    at com.google.cloud.datastore.DatastoreImpl.commit(DatastoreImpl.java:386) 
    at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:244) 
    at com.google.cloud.RetryHelper.doRetry(RetryHelper.java:179) 
    at com.google.cloud.datastore.DatastoreImpl$4.call(DatastoreImpl.java:387) 
    at com.google.cloud.datastore.DatastoreImpl$4.call(DatastoreImpl.java:390) 
    at com.google.cloud.datastore.spi.DefaultDatastoreRpc.commit(DefaultDatastoreRpc.java:131) 
    at com.google.datastore.v1.client.Datastore.commit(Datastore.java:84) 
    at com.google.datastore.v1.client.RemoteRpc.call(RemoteRpc.java:89) 
    at com.google.datastore.v1.client.RemoteRpc.makeException(RemoteRpc.java:148) 
    at com.google.rpc.Status.parseFrom(Status.java:323) 
    java.lang.NoSuchMethodError: com.google.protobuf.GeneratedMessage.parseWithIOException(Lcom/google/protobuf/Parser;Ljava/io/InputStream;)Lcom/google/protobuf/Message; 

Antwort

2

Ich denke, das ein Symptom für eine ältere Version der es auf Ihrem Classpath machen com.google.protobuf:protobuf-java Artefakt ist. Die GeneratedMessage.parseWithIOException Methode wurde in com.google.protobuf:protobuf-java:jar:3.0.0 hinzugefügt.

Ein Ansatz für die Prävention ist das Hinzufügen eines dependencyManagement Abschnitts auf dem pom-Datei:

<dependencyManagement> 
    <dependencies> 
    <dependency> 
     <groupId>com.google.protobuf</groupId> 
     <artifactId>protobuf-java</artifactId> 
     <version>3.0.0</version> 
    </dependency> 
    </dependencies> 
</dependencyManagement> 

Sobald das Abhängigkeitsproblem bereinigt wird, soll der Kunde in der Lage sein, richtig Status protos zu analysieren und den zugrunde liegenden Fehler anzuzeigen.

+0

Vielen Dank. Das hat den Trick gemacht. Die Ausnahme ist in der Tat eine Ausnahme "Index Einträge zu groß für Entität" –

Verwandte Themen