2015-11-30 2 views
1

Мы используем Google Cloud Bigtable, обращаясь к нему из экземпляров GCE, используя Go library для доступа к нему. Для некоторых запросов ReadRow мы получаем следующую ошибку:Bigtable (from 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, которая вызывала эту ошибку. Чтобы быть ясным, слишком много читать (> 256 МБ) могло бы также вызвать эту ошибку, но это было не единственное условие ошибки. Я смог воспроизвести эту ошибку на строках размером до 256 МБ. С этой информацией команда BigTable идентифицировала ошибку, а недавно (~ 12 февраля) выкатила ее на производство. После релиза я подтвердил, что эти ошибки исчезли из журналов приложений.

2

От инженерии - re: too much: Да, теоретически это возможно. В настоящее время, если клиент пытается прочитать более 256 МБ из строки за один раз, мы убьем чтение с ошибкой. Однако эта ошибка должна быть передана клиенту. Возможно, клиент Go не проходит через эти сообщения об ошибках. (либо большой столбец, либо библиотека grpc go?)

Текущий объем работы для слишком большого количества данных в одной строке будет состоять в том, чтобы прочитать несколько столбцов (или семейств столбцов) за раз, общий размер, считанный из строки за один раз, всегда меньше 256 МБ. Мы работаем над тем, чтобы смягчить этот предел, но это исправление по-прежнему по крайней мере на несколько недель.

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