1

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

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

值得注意的是,这些是一致的。换句话说,如果我们重试相同的查询(我们在两次尝试之间等待大约 15 分钟),我们(几乎?)总是再次得到相同的错误。所以它似乎不仅仅是一个暂时的错误,而是可能与正在获取的数据有关。这是我们正在运行的特定查询:

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

这可能只是意味着“你试图获取太多”吗?

4

2 回答 2

2

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

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

于 2015-12-01T18:15:01.127 回答
0

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

于 2016-02-22T16:51:58.647 回答