We're getting a lot of "Invalid protobuf byte sequence" errors over a bidi 
streaming service call.

The server is grpc-java and the client go.

The message that seems to be causing the issue is a relatively large 
message of repeated maps. One example is around 400kB.

It doesn't look like it's deterministically repeatable.

We seem to be getting the "invalid" message on both sides, though it's a 
little hard (for me) to tell if, on the go side, it's just reiterating what 
the java side told it.

The java side is definitely failing trying to parse a buffer.

The cause of the invalid error isn't consistent: sometimes its a zero tag, 
sometimes bad UTF-8, etc., so it appears to be a bad buffer.

I added some very hacky debugging and in the bad UTF-8 case, which confirms 
it looks like a bad buffer. There's the prefix of a normal string and then 
a couple of nulls.

Trying to figure out what in the middle of all of this to try to observe to 
narrow things down. I did turn on the netty logging though I don't have the 
background to get much out of it at this point.

grpc-java is 1.0.3. Go grpc is 
up-to-date/63bd55dfbf781b183216d2dd4433a659c947648a according to glide.

Annecdotally, it seems to happen only a little at the start of the service 
and then increase in frequency (not sure if this is load based ... a bit 
hard to tell that right now.)

Also, just saw this for the first time:

2016-12-23T20:43:49.213Z [grpc-default-worker-ELG-3-3] ERROR 
io.netty.util.ResourceLeakDetector - LEAK: ByteBuf.release() was not called 
before it's garbage-collected. Enable advanced leak reporting to find out 
where the leak occurred. To enable advanced leak reporting, specify the JVM 
option '-Dio.netty.leakDetection.level=adv

Typical error message:

2016-12-23T19:52:23.597Z [grpc-default-executor-4] ERROR 
io.grpc.internal.SerializingExecutor - Exception while executing runnable 
io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1@6e71d62c
io.grpc.StatusRuntimeException: INTERNAL: Invalid protobuf byte sequence
        at io.grpc.Status.asRuntimeException(Status.java:532)
        at 
io.grpc.protobuf.lite.ProtoLiteUtils$2.parse(ProtoLiteUtils.java:175)
        at 
io.grpc.protobuf.lite.ProtoLiteUtils$2.parse(ProtoLiteUtils.java:96)
        at io.grpc.MethodDescriptor.parseRequest(MethodDescriptor.java:267)
        at 
io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messageRead(ServerCallImpl.java:241)
        at 
io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1.runInContext(ServerImpl.java:557)
        at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:52)
        at 
io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol 
message had invalid UTF-8.
        at 
com.google.protobuf.InvalidProtocolBufferException.invalidUtf8(InvalidProtocolBufferException.java:144)
        at 
com.google.protobuf.CodedInputStream$ArrayDecoder.readStringRequireUtf8(CodedInputStream.java:734)
        at io.ascend.protos.core.Value.<init>(Value.java:65)
        at io.ascend.protos.core.Value.<init>(Value.java:17)
        at io.ascend.protos.core.Value$1.parsePartialFrom(Value.java:1553)
        at io.ascend.protos.core.Value$1.parsePartialFrom(Value.java:1548)
        at io.ascend.protos.core.Value$Builder.mergeFrom(Value.java:844)
        at io.ascend.protos.core.Value$Builder.mergeFrom(Value.java:660)
        at 
com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:799)
        at 
com.google.protobuf.MapEntryLite.parseField(MapEntryLite.java:128)
        at 
com.google.protobuf.MapEntryLite.parseEntry(MapEntryLite.java:184)
        at com.google.protobuf.MapEntry.<init>(MapEntry.java:106)
        at com.google.protobuf.MapEntry.<init>(MapEntry.java:51)
        at 
com.google.protobuf.MapEntry$Metadata$1.parsePartialFrom(MapEntry.java:71)
        at 
com.google.protobuf.MapEntry$Metadata$1.parsePartialFrom(MapEntry.java:65)
        at 
com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:815)
        at io.ascend.protos.core.Struct.<init>(Struct.java:57)
        at io.ascend.protos.core.Struct.<init>(Struct.java:14)
        at io.ascend.protos.core.Struct$1.parsePartialFrom(Struct.java:673)
        at io.ascend.protos.core.Struct$1.parsePartialFrom(Struct.java:668)
        at 
com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:815)
        at io.ascend.protos.worker.RecordsRead.<init>(RecordsRead.java:52)
        at io.ascend.protos.worker.RecordsRead.<init>(RecordsRead.java:9)
        at 
io.ascend.protos.worker.RecordsRead$1.parsePartialFrom(RecordsRead.java:694)
        at 
io.ascend.protos.worker.RecordsRead$1.parsePartialFrom(RecordsRead.java:689)
        at 
com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:815)
        at io.ascend.protos.worker.Update.<init>(Update.java:106)
        at io.ascend.protos.worker.Update.<init>(Update.java:9)
        at 
io.ascend.protos.worker.Update$1.parsePartialFrom(Update.java:1942)
        at 
io.ascend.protos.worker.Update$1.parsePartialFrom(Update.java:1937)
        at 
com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:91)
        at 
com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49)
        at 
io.grpc.protobuf.lite.ProtoLiteUtils$2.parseFrom(ProtoLiteUtils.java:180)
        at 
io.grpc.protobuf.lite.ProtoLiteUtils$2.parse(ProtoLiteUtils.java:172)
        ... 9 common frames omitted

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/0b6a274a-ae50-4962-9dcd-ca9e6a94e1ed%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to