我使用大查询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"
}
我不确定为什么有些错误被表示为数据类,有些错误会在底层客户端中抛出异常,但它会产生这种不幸的影响。