Starting this morning EDT, we began receiving intermittent errors when attempting to parse the result JSON of an AsyncBatchAnnotateFiles request using JsonParser from Google.ProtoBuf. The JSON returned from AsyncBatchAnnotateFiles varies from request to request, namely in that occasionally the response contains a "globalIndex" property belonging to the Words objects. When globalIndex is included in the result JSON, the parsing of the result JSON as an AnnotateFileResponse fails; otherwise, it succeeds. There doesn't seem to be any pattern to when the service returns the error-producing JSON vs. the JSON we've been used to seeing (without globalIndex), though both are valid JSON. The same document can produce both working and non-working JSON results using the same API calls.
Google.Protobuf.InvalidProtocolBufferException: Unknown field: globalIndex
at Google.Protobuf.JsonParser.Merge(IMessage message, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.ParseSingleValue(FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.MergeRepeatedField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.Merge(IMessage message, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.ParseSingleValue(FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.MergeRepeatedField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.Merge(IMessage message, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.ParseSingleValue(FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.MergeRepeatedField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.Merge(IMessage message, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.ParseSingleValue(FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.MergeRepeatedField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.Merge(IMessage message, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.ParseSingleValue(FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.MergeField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.Merge(IMessage message, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.ParseSingleValue(FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.MergeRepeatedField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.Merge(IMessage message, JsonTokenizer tokenizer)
at Google.Protobuf.JsonParser.Merge(IMessage message, TextReader jsonReader)
at Google.Protobuf.JsonParser.Parse[T](TextReader jsonReader)
[<our code>]
I'm posting here (rather than StackOverflow) because this seems to be an issue with the AsyncBatchAnnotateFiles producing different results on repeated calls to annotate the same single file.
For the Google.Cloud.Vision.V1 Nuget package, we originally saw this issue this morning on v1.3.0, so we upgraded to latest v1.6.0 under the assumption that a breaking change had been made to the AnnotateFileResponse schema, but we are still seeing the issue using the latest v1.6.0. The version of Google.Protobuf is 3.8.0, which is not the latest (3.9.1), but it was the version we were automatically upgraded to when upgrading Google.Cloud.Vision.V1 to 1.6.0.
We would appreciate any insight into this, especially if we're doing something wrong here. Is this behavior expected?