How to troubleshoot protobuf issues - protocol-buffers

During some load tests, in some circumstances I have:
session with status Status{code=CANCELLED, description=Failed to read message., cause=io.grpc.StatusRuntimeException: INTERNAL: Invalid protobuf byte sequence
at io.grpc.Status.asRuntimeException(Status.java:526)
at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteUtils.java:218)
at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteUtils.java:118)
at io.grpc.MethodDescriptor.parseResponse(MethodDescriptor.java:284)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInternal(ClientCallImpl.java:661)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1MessagesAvailable.runInContext(ClientCallImpl.java:646)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message contained an invalid tag (zero).
at com.google.protobuf.InvalidProtocolBufferException.invalidTag(InvalidProtocolBufferException.java:125)
at com.google.protobuf.CodedInputStream$ArrayDecoder.readTag(CodedInputStream.java:633)
at c.n.r.m.c.v1.CMM.<init>(CMM.java:45)
at c.n.r.m.c.v1.CMM$1.parsePartialFrom(CMM.java:974)
at c.n.r.m.c.v1.CMM$1.parsePartialFrom(CMM.java:968)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:86)
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parseFrom(ProtoLiteUtils.java:223)
at io.grpc.protobuf.lite.ProtoLiteUtils$MessageMarshaller.parse(ProtoLiteUtils.java:215)
... 9 more
}.
The client/server are some java aps. Both have the same mvn dependencies incuding protos.
Any idea how I can debug this ? The msg is printed on the client stream onError. So I assume that it is the server that cannot decode the grpc message.
A similar issue occurs if the server is using a python grpc implementation.
I cannot put a breakpoint in the c.n.r.m.c.v1.CMM$1.parsePartialFrom(CMM.java:974)_ - yet. Some challenges from the IDE.

Protocol message contained an invalid tag (zero).
This means the received message was invalid. This normally happens if the message is corrupted or it wasn't a protobuf message at all. Normal schema evolution does not trigger this.

Related

Is there a maximum size for a QPID DerbyMessageStore file?

We have been running the Java QPID broker on CentOS for several years without issues when one of our production brokers failed and does not seem to be working properly after multiple restarts. This error continues to occur:
Caused by: org.apache.qpid.AMQStoreException: Error writing enqueued message with id 5836 for queue Ingest.instrument_particles with id 716760ac-c686-3454-b645-c86f15e29877 to database [error code 541: internal error]
at org.apache.qpid.server.store.derby.DerbyMessageStore.enqueueMessage(DerbyMessageStore.java:1242)
at org.apache.qpid.server.store.derby.DerbyMessageStore$DerbyTransaction.enqueueMessage(DerbyMessageStore.java:1989)
at org.apache.qpid.server.txn.AsyncAutoCommitTransaction.enqueue(AsyncAutoCommitTransaction.java:265)
... 12 more
Caused by: java.sql.SQLException: An unexpected exception was thrown
There's more to this stack trace, but the gist of it seems to be that QPID is failing to write to the message store. Is there a maximum size of files within the store? One of them exceeds 410GB. We are running JDK 1.8.0_332 on CentOS 7.9, if that makes a difference.

ApplIdentity data set on the MQ message is not read by the reciever

I am using TIBCO Business works so I can't directly us JMS API and I can only set the input to the API. Below is the MQ queue URI I have created but I get an error when the application tries to get handle to queue during runtime.
queue://QManager/QName?targetClient=1&mdWriteEnabled=true&mdMessageContext=1
Error I am getting
caused by: com.tibco.plugin.share.jms.impl.JMSExceptionWrapper: com.ibm.msg.client.jms.DetailedJMSException: JMSCC0005: The specified value '??1' is not allowed for 'mdMessageContext'.
The given value is not allowed for the property specified.
Change the value to a value that is supported for the property.
According to IBM knowledge article, the value I am setting for mdMessageContext is correct. below are the links to the Knowledge article.
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q032350_.htm
https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_8.0.0/com.ibm.mq.javadoc.doc/WMQJMSClasses/constant-values.html#com.ibm.msg.client.wmq.common.CommonConstants.WMQ_MQMD_WRITE_ENABLED
Thanks for your help.

z/OS ftp: 550 Unable to create data set E043156.UNIX.USERLIB.SOME for STOR command

I'm trying to upload a file from linux to z/OS via ftp (with filezilla). The upload fails with this error:
550-SVC99 RETURN CODE=4 S99INFO=0 S99ERROR=38668 HEX=970C S99ERSN code X'000042CE'.
550 Unable to create data set TESTUSER.UNIX.USERLIB.SOME for STOR command.
Does anyone know how to interpret this message?
SVC99, also known as DYNALLOC, is the dynamic allocation routine on z/OS. Documentation is voluminous, see the IBM Documentation for z/OS and look under z/OS MVS -> z/OS MVS Programming: Authorized Assembler Services -> Dynamic Allocation -> Requesting Dynamic Allocation Functions -> Interpreting Error Reason Codes from DYNALLOC. For z/OS 2.2 that path should take you here.
Meaning: Severe SMS VTOC service error.
Application programmer action:
Check field S99ERSN for a non-zero value. A non-zero value in S99ERSN
is a reason code. See SMS reason code (S99ERSN) for the possible
reason codes. If the system displayed message IKJ56893I, SMS messages
for the error follow IKJ56893I. If the system displayed message
IKJ56894I, no messages were returned. Request the message processing
option of dynamic allocation to obtain related messages and resubmit
the request. Because SMS creates entries in the logrec data set, if
you still cannot obtain messages, locate the logrec data set entry for
the error that corresponds to the reason code. If you need further
assistance contact your system programmer.
Corresponding Messages: IKJ56893I (messages were displayed) or
IKJ56894I (messages not displayed).
Following the link, your S99ERSN code is documented as...
42CE (17102)
Meaning: While trying to define a non-VSAM data set, a catalog error or
exceptional condition caused the allocation attempt to fail.
Application Programmer Action: Examine the return code and reason
code in accompanying message IGD17102I in z/OS MVS System Messages,
Vol 8 (IEF-IGD).
So there should be an accompanying message IGD17102I in the system log with even more information. Looking at the documentation, I'd contact your support staff as this doesn't look like something you can fix yourself.

[Error]: Failed to run command with error: Error Domain=Parse Code=428

I get this error sometimes when trying to save things to Parse or to fetch data from it.
This is not constant and appear once in a while making the operation to fail.
I have contacted Parse for that. Here is their answer:
Starting on 4/28/2016, apps that have not migrated their database may see a "428" error code if the request cannot be handled by the remaining shared pool of resources. If you see this error in your logs, we highly recommend migrating the database for your app without delay.
Means this happens because of starting this date all apps are on low priority but those who started DB migration. So, Migration of the DB should resolve that.

JMeter SocketException on .png,.jpg etc files

I am running a Jmeter script in version 2.8. After running script in result
tree i am getting below mentioned error. But this error is not coming to
any specific request. I am getting this error for any random request. If i
ran test 1st time i am getting error for one png request. In next run same
png request passed successfully and error is seen for some different
request.
Can someone please help me to resolve this issue?
java.net.SocketException: Connection reset at
java.net.SocketInputStream.read(SocketInputStream.java:168) at
java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at
java.io.BufferedInputStream.read1(BufferedInputStream.java:258) at
java.io.BufferedInputStream.read(BufferedInputStream.java:317) at
sun.net.www.MeteredStream.read(MeteredStream.java:116) at
java.io.FilterInputStream.read(FilterInputStream.java:116) at
sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2676)
at org.apache.commons.io.input.ProxyInputStream.read(ProxyInputStream.java:99)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256) at
java.io.BufferedInputStream.read(BufferedInputStream.java:317) at
java.io.FilterInputStream.read(FilterInputStream.java:90) at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.readResponse(HTTPSamplerBase.java:1620)
at org.apache.jmeter.protocol.http.sampler.HTTPAbstractImpl.readResponse(HTTPAbstractImpl.java:236)
at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.readResponse(HTTPJavaImpl.java:282)
at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:512)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1054)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1043)
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:416)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
at java.lang.Thread.run(Thread.java:662)
This reflects server side issues as you are getting connection reset error.
If you are doing real load test, do it in NON GUI mode, GUI mode is for scripting.

Resources