[
https://issues.apache.org/jira/browse/QPID-7741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15969173#comment-15969173
]
Lorenz Quack commented on QPID-7741:
------------------------------------
Yea, I noticed that the decoder could use a brush-up.
And the way the validation is performed did not necessarily make it better.
However, it was not my immediate concern and the idea was that the annotations
should be useful in the future even if we choose to rewrite the decoder.
> [Java Broker] In AMQP 1.0 gracefully handle non-compliant performatives
> -----------------------------------------------------------------------
>
> Key: QPID-7741
> URL: https://issues.apache.org/jira/browse/QPID-7741
> Project: Qpid
> Issue Type: Bug
> Components: Java Broker
> Reporter: Lorenz Quack
> Fix For: qpid-java-broker-7.0.0
>
>
> Currently the amqp 1.0 codec does not enforce mandatory fields. Often this
> causes problems later in the code like {{NullPointerExceptions}}
> One example is when sending an empty Begin without any of the mandatory
> fields:
> {noformat}
> 2017-04-07 14:46:55,804 DEBUG [IO-/127.0.0.1:39032] (o.a.q.s.p.frame) -
> RECV[/127.0.0.1:39032|37] : Begin{}
> 2017-04-07 14:46:55,805 WARN [IO-/127.0.0.1:39032]
> (o.a.q.s.p.v.f.FrameHandler) - Unexpected exception handling frame
> java.lang.NullPointerException: null
> at
> org.apache.qpid.server.protocol.v1_0.Session_1_0.<init>(Session_1_0.java:182)
> at
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl.receiveBegin(AMQPConnection_1_0Impl.java:622)
> at
> org.apache.qpid.server.protocol.v1_0.type.transport.Begin.invoke(Begin.java:224)
> at
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl.receive(AMQPConnection_1_0Impl.java:318)
> at
> org.apache.qpid.server.protocol.v1_0.framing.FrameHandler.parse(FrameHandler.java:167)
> at
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl$9.run(AMQPConnection_1_0Impl.java:1195)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl.received(AMQPConnection_1_0Impl.java:1168)
> at
> org.apache.qpid.server.transport.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:129)
> at
> org.apache.qpid.server.transport.NonBlockingConnection.processAmqpData(NonBlockingConnection.java:592)
> at
> org.apache.qpid.server.transport.NonBlockingConnectionPlainDelegate.processData(NonBlockingConnectionPlainDelegate.java:58)
> at
> org.apache.qpid.server.transport.NonBlockingConnection.doRead(NonBlockingConnection.java:482)
> at
> org.apache.qpid.server.transport.NonBlockingConnection.doWork(NonBlockingConnection.java:269)
> at
> org.apache.qpid.server.transport.NetworkConnectionScheduler.processConnection(NetworkConnectionScheduler.java:124)
> at
> org.apache.qpid.server.transport.SelectorThread$ConnectionProcessor.processConnection(SelectorThread.java:563)
> at
> org.apache.qpid.server.transport.SelectorThread$SelectionTask.performSelect(SelectorThread.java:354)
> at
> org.apache.qpid.server.transport.SelectorThread$SelectionTask.run(SelectorThread.java:97)
> at
> org.apache.qpid.server.transport.SelectorThread.run(SelectorThread.java:521)
> 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)
> 2017-04-07 14:46:55,808 DEBUG [IO-/127.0.0.1:39032] (o.a.q.s.p.frame) -
> SEND[/127.0.0.1:39032|0] :
> Close{error=Error{condition=connection-forced,description=java.lang.NullPointerException}}
> {noformat}
> The correct behaviour would be to close the connection with a {{decode-error}}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]