为什么我在C ++应用程序中从Bigtable中解脱出来?

时间:2016-01-28 19:32:59

标签: c++ grpc google-cloud-bigtable

我正在使用gRPC Bigtable客户端运行用C ++编写的数据导入作业。一段时间后插入了超过1M条记录,我收到goaway消息max_age。这是我的第一个一般和第一个长期运行的Bigtable应用程序,所以我不确定goaway是否特定于正在进行的插入次数或连接持续时间,或goaway实际上是什么。看来我正在达成某种超时。看一下gRPC C ++代码,特别是grpc :: Channel,我没有看到任何超时控件,所以我不知道如何处理这个问题,除了重新重新打开数据库连接。

我从gRPC客户端获得的确切错误消息如下所示:

D0127 23:05:35.439218531   19729 chttp2_transport.c:683]     got goaway [0]: 6d 61 78 5f 61 67 65 'max_age'

gRPC和protobuf是从2016年1月14日左右的主线源构建的,因此客户端代码是最近的。

有关为什么Bigtable会发送goaway的任何建议?是否可以打开与Bigtable交谈时不会超时的grpc::Channel

2 个答案:

答案 0 :(得分:1)

我对java方面比较熟悉,所以我希望这会有所帮助。对于持续使用的连接,连接有1小时超时。 java频道也会在短时间内超时而没有任何活动(大约几分钟)。

答案 1 :(得分:0)

您使用的是哪个客户?目前,一旦收到失控,gRPC C ++实现将关闭通道。这有点过于激进,你可能想检查通道状态并重新创建通道,如果你看到它在FATAL_FAILURE中。

所罗门所说的关于超时的说法是正确的。