Java 我们如何防止谷歌云API吞并异常?

Java 我们如何防止谷歌云API吞并异常?,java,google-app-engine,google-cloud-datastore,google-cloud-platform,Java,Google App Engine,Google Cloud Datastore,Google Cloud Platform,我有时会在put()上遇到以下异常。(尽管总体而言,我的代码工作正常。) 我最好的猜测是,数据存储在内部遇到了一个索引错误(确实存在),但我不确定,因为这个错误是由Protobuf解析问题造成的 ,使用Protobuf解析消息时,类似的异常吞噬是由Dataflow自己的数据存储API内部的错误引起的,Dataflow团队修复了这一问题——但这里我根本不使用Dataflow 我怎样才能知道这是什么原因 使用谷歌云API 0.28 ... at com.google.cloud.datasto

我有时会在put()上遇到以下异常。(尽管总体而言,我的代码工作正常。)

我最好的猜测是,数据存储在内部遇到了一个索引错误(确实存在),但我不确定,因为这个错误是由Protobuf解析问题造成的

,使用Protobuf解析消息时,类似的异常吞噬是由Dataflow自己的数据存储API内部的错误引起的,Dataflow团队修复了这一问题——但这里我根本不使用Dataflow

我怎样才能知道这是什么原因

使用谷歌云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;

我认为这是旧版本的
com.google.protobuf:protobufjava
工件进入类路径的症状。在
com.google.protobuf:protobufjava:jar:3.0.0
中添加了
GeneratedMessage.parseWithIOException
方法

防止这种情况的一种方法是在pom文件中添加一个
dependencyManagement
部分:

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

com.google.protobuf
protobuf java
3.0.0

一旦清除了依赖性问题,客户端应该能够正确解析
状态
protos并显示潜在错误。

谢谢。这就成功了。这个异常实际上是一个“索引项对于实体来说太大”的异常