1

Я иногда получаю следующее исключение в put(). (Хотя в целом мой код отлично работает.)Как мы можем предотвратить использование Google Cloud API от проглатывания исключений?

Я думаю, что Datastore внутренне сталкивается с ошибкой индексирования (что есть no tools for diagnosing), но я не уверен, потому что ошибка проглатывается с проблемой анализа Protobuf.

In another case, аналогичное проглатывание исключений с сообщением анализа Protobuf было вызвано ошибкой, внутренней для собственного Datastore API Dataflow, и команда Dataflow исправила это, но здесь я вообще не использую Dataflow.

Как я могу узнать, что вызывает это?

Использование 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; 

ответ

2

Я думаю, что это симптом более старой версии com.google.protobuf:protobuf-java артефакт делает его на свой путь к классам. Метод GeneratedMessage.parseWithIOException был добавлен в com.google.protobuf:protobuf-java:jar:3.0.0.

Один подхода для предотвращения, что добавление dependencyManagement раздела в файл п:

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

Как только проблема зависимости очищаются, клиент должен иметь возможность правильно разобрать Status Протос и отображать основную ошибку.

+0

спасибо. Это сделал трюк. Исключением является действительно исключение «Индексные записи, слишком большие для сущности» –