Bigtable(来自 Go)returns "server closed the stream without sending trailers"

Bigtable (from Go) returns "server closed the stream without sending trailers"

我们正在使用 Google Cloud Bigtable,使用 Go library 从 GCE 实例访问它。对于某些 ReadRow 查询,我们收到以下错误:

rpc error: code = 13 desc = "server closed the stream without sending trailers"

值得注意的是,这些是一致的。换句话说,如果我们重试相同的查询(两次尝试之间等待约 15 分钟),我们(几乎?)总是会再次遇到相同的错误。所以它确实 not 看起来只是一个暂时性错误,但可能与正在获取的数据有某种关系。下面是我们的具体查询 运行:

row, err := tbl.ReadRow(ctx, <my-row-id>, 
    bigtable.RowFilter(bigtable.ChainFilters(
        bigtable.FamilyFilter(<my-column-family>),
        bigtable.LatestNFilter(1))))

这是否意味着 "you are trying to fetch too much"?

来自工程学-回复:太多了:是的,理论上可以。目前,如果客户端尝试一次从一行读取超过 256MB,我们将终止读取并报错。不过,该错误应该传递给客户端。 Go 客户端可能没有传递这些错误消息。 (是bigtable go client,还是grpc go library?)

对于单行中过多数据的当前解决方法是一次读取几列(或列族),以便一次从该行读取的总大小总是更少大于 256MB。我们正在努力放宽该限制,但该修复至少还需要几周时间。

对于在家进行跟踪的任何人,实际上有一个 BigTable 错误导致了此错误。需要明确的是,尝试读取太多(> 256MB)可能 导致此错误,但这不是唯一的错误情况。我能够在远低于 256MB 的行上重现此错误。有了这些信息,BigTable 团队确定了这个错误,并在最近(~2 月 12 日)将其投入生产。发布后,我确认这些错误从我的应用程序日志中消失了。