Тег конечной группы сообщений протокола не соответствовал ожидаемому тегу

Я продолжаю получать следующую трассировку стека и не уверен, что это значит.

Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.
    at com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:73)
    at com.google.protobuf.CodedInputStream.checkLastTagWas(CodedInputStream.java:124)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:189)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:732)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:238)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:178)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:724)
  • Что означает, что тег конечной группы протокола не соответствует ожидаемому тегу. имею в виду?
  • Что такое тег конечной группы сообщений?
  • Где-то это документировано?

Ответ 1

Группы в protobuf записываются как числовая пара начала/конца - вроде как <foo> нуждается в </foo>, но в другом формате. По существу, он жалуется, что нашел вместо него </bar> (просто: xml - это только метафора). Подробности находятся в спецификации кодирования, но длинный и короткий - это один из:

  • данные по своей сути повреждены (либо повреждены ошибочным кодировщиком), либо
  • данные становятся поврежденными во время чтения или
  • данные в порядке, и вы дали дефектный декодер

Если бы мне пришлось угадать, данные были повреждены в пути - потому что настолько пугающе распространено