Apache Beam可重试错误似乎不适用于某些错误

时间:2018-01-16 11:51:18

标签: java google-cloud-dataflow apache-beam

我使用大查询io使用动态目标api将数据写入表。在我的大查询转换中,我将InsertRetryPolicy设置为never()

对于某些类别的大查询错误,我注意到的是模式错误,该策略在BigQueryServicesImpl中使用,从第751行到第771行。

但是,某些类错误会在底层的bigquery客户端中引发异常,这个异常没有被捕获,而第751行也在那里

List<TableDataInsertAllResponse.InsertErrors> errors = futures.get(i).get()

异常冒泡并且没有通过逻辑来询问策略是否应该重试。结果捆绑失败,因为它是一个流媒体工作,它将重试这个捆绑包永远拖延我的管道。

抛出我观察到的异常的错误是:

{
  "code" : 404,
  "errors" : [ {
    "domain" : "global",
    "message" : "Not found: Table account:dataset.paymentfraudresultsv1_uk_2018",
    "reason" : "notFound"
  }


{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "The destination table's partition whatever_uk_2017$20171020 is outside the allowed bounds. You can only stream to partitions within 31 days in the past and 16 days in the future relative to the current date.",
    "reason" : "invalid"
  }

我不确定为什么有些错误被表示为数据类,有些错误会在底层客户端中抛出异常,但它会产生这种不幸的影响。

0 个答案:

没有答案