2015-11-30 53 views
1

我們正在使用Google Cloud Bigtable,使用Go library從GCE實例訪問它以訪問它。對於一些ReadRow查詢,我們得到以下錯誤:Bigtable(來自Go)返回「服務器關閉了流而不發送預告片」

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)))) 

難道這只是意味着「你想獲取太多」?

回答

0

對於任何在家裏的人,實際上有一個導致此錯誤的BigTable錯誤。要清楚,試圖讀取太多(> 256MB)可能導致此錯誤,但這不是唯一的錯誤條件。我能夠在低於256MB的行上重現此錯誤。有了這些信息,BigTable團隊發現了這個漏洞,最近(〜Feb 12)將它投入生產。發佈後,我確認這些錯誤從我的應用程序日誌中消失。

2

從工程 - 回覆:太多:是的,理論上可以。目前,如果客戶端每次嘗試從一行中讀取超過256MB的數據,我們將會拋出一個錯誤。該錯誤應該傳遞給客戶端。 Go客戶端可能沒有通過這些錯誤消息。 (無論是bigtable go客戶端,還是grpc go庫?)

當前在單行中過多數據的解決方法是每次讀取幾列(或列族),以便從一行讀取的總大小總是小於256MB。我們正在努力放寬這一限制,但這一修正至少還有幾個星期。

相關問題