qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lorenz Quack (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (QPID-7982) [Java Broker] MariaDB backed JDBC virtualhost truncates message content at 64K leading to Broker abnormal shutdown
Date Thu, 26 Oct 2017 14:18:01 GMT

     [ https://issues.apache.org/jira/browse/QPID-7982?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Lorenz Quack resolved QPID-7982.
--------------------------------
    Resolution: Fixed

> [Java Broker] MariaDB backed JDBC virtualhost truncates message content at 64K leading
to Broker abnormal shutdown
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-7982
>                 URL: https://issues.apache.org/jira/browse/QPID-7982
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: 0.30, 0.32, qpid-java-6.0, qpid-java-6.1
>            Reporter: Keith Wall
>            Assignee: Keith Wall
>             Fix For: qpid-java-broker-7.0.0
>
>
> When using the Qpid Broker-J with a JDBC backed virtualhost using MariaDB, the database
silently truncates message content at 64KB.  This means if the Broker needs to recover a message
from disk (i.e. after a restart or after message content has been flowed to disk), it will
fail to retrieve the expected number of message bytes and will fail as it tries to deliver
the message to the consumer.  The failure also manifests if the message is viewed from Management.
 
> {noformat}
> ########################################################################
> #
> # Unhandled Exception java.lang.IllegalArgumentException: offset: 0, length: 262152,
remaining: 65535 in Thread IO-/127.0.0.1:56942
> #
> # Exiting
> #
> ########################################################################
> java.lang.IllegalArgumentException: offset: 0, length: 262152, remaining: 65535
> 	at org.apache.qpid.server.bytebuffer.QpidByteBuffer.view(QpidByteBuffer.java:1003)
> 	at org.apache.qpid.server.store.jdbc.AbstractJDBCMessageStore$StoredJDBCMessage.getContent(AbstractJDBCMessageStore.java:1443)
> 	at org.apache.qpid.server.message.AbstractServerMessageImpl.getContent(AbstractServerMessageImpl.java:191)
> 	at org.apache.qpid.server.protocol.v1_0.Message_1_0.getContent(Message_1_0.java:215)
> 	at org.apache.qpid.server.message.AbstractServerMessageImpl.getContent(AbstractServerMessageImpl.java:181)
> 	at org.apache.qpid.server.protocol.v1_0.ConsumerTarget_1_0.doSend(ConsumerTarget_1_0.java:154)
> 	at org.apache.qpid.server.consumer.AbstractConsumerTarget.send(AbstractConsumerTarget.java:227)
> 	at org.apache.qpid.server.consumer.AbstractConsumerTarget.sendNextMessage(AbstractConsumerTarget.java:280)
> 	at org.apache.qpid.server.consumer.AbstractConsumerTarget.processPending(AbstractConsumerTarget.java:162)
> 	at org.apache.qpid.server.session.AbstractAMQPSession.processPending(AbstractAMQPSession.java:394)
> 	at org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl$ProcessPendingIterator.lambda$next$2(AMQPConnection_1_0Impl.java:1814)
> 	at org.apache.qpid.server.transport.NonBlockingConnection.processPending(NonBlockingConnection.java:356)
> 	at org.apache.qpid.server.transport.NonBlockingConnection.doWork(NonBlockingConnection.java:264)
> 	at org.apache.qpid.server.transport.NetworkConnectionScheduler.processConnection(NetworkConnectionScheduler.java:134)
> 	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:1149)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> 	at org.apache.qpid.server.bytebuffer.QpidByteBuffer.lambda$null$0(QpidByteBuffer.java:1396)
> 	at java.lang.Thread.run(Thread.java:748)
> {noformat}
> Inspecting the db you see:
> {noformat}
> MariaDB [qpid]> select octet_length(content) from QPID_MESSAGE_CONTENT
>     -> ;
> +-----------------------+
> | octet_length(content) |
> +-----------------------+
> |                 65535 |
> +-----------------------+
> 1 row in set (0.01 sec)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message