2016-01-28 1 views
2

Я запускаю задание на импорт данных, написанное на C++, используя клиент gRPC Bigtable. По истечении определенного периода времени и более 1M записей я получаю goaway с сообщением max_age. Это мое первое в общем и первое долгое приложение Bigtable, поэтому я не уверен, что это goaway является специфическим для количества вставляемых вставок или длительности соединения, или что это такое goaway. Кажется, я нахожусь в тайм-ауте. Если посмотреть на код gRPC C++, grpc :: Channel, я не вижу никаких элементов управления тайм-аутом, поэтому я не уверен, как справиться с этой проблемой, за исключением повторного открытия соединения с БД заново.Почему я получаю сообщение от Bigtable в моем приложении на C++?

Точное сообщение об ошибке, что я получаю от КПГР клиента выглядит следующим образом:

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

КПГРЫ и Protobuf построены из источника, от магистрали вокруг 01/22/16, поэтому код клиента Недавний ,

Любые предложения относительно того, почему Bigtable отправит goaway? И можно ли открыть grpc::Channel, который не затягивается при разговоре с Bigtable?

+2

Просто угадайте, но если бы через час после начала, вы можете обновить токен аутентификации. –

ответ

1

Я больше знаком со стороной java, поэтому надеюсь, что это поможет. Существует 1-часовой тайм-аут соединения для соединений с постоянным использованием. Канал java также отключается через короткое время без какой-либо активности (порядка нескольких минут).

0

Какой клиент вы используете? В настоящее время реализация gRPC C++ отключит канал после получения Goaway. Это слишком агрессивно, и вы можете проверить состояние канала и воссоздать канал, если видите, что он находится в FATAL_FAILURE.

Что Соломон сказал правильно о таймауте.

Смежные вопросы