created https://issues.apache.org/jira/browse/AMQ-4076 to track and fix this.
On 25 September 2012 11:12, Gary Tully <[email protected]> wrote: > I can't think of a workaround save the use the VM Cursor so there is > no marshalling, but the internal usage of marshallers should not > impose a limit on the message size, that should be left to the > transports which accept the messages in the first place. > > Please raise a jira issue and we will try and resolve for 5.7, this is > a blocker. > > On 25 September 2012 09:36, yazun <[email protected]> wrote: >> Hello, >> We rely on the Camel file component to publish rather largish files as >> messages (>100MB) using FileCursor. It used to work well (in pre 5.6 I >> think) but now it is impossible to publish anything larger due to the fact >> that even it is possible to set sizePrefixDisabled and maxFrameSize for the >> OpenWire negotiation properly, so the publishing works - it is not possible >> to fetch or browse such messages as FilePendingMessageCursor.getMessage() >> calls OpenWireFormat.unmarshal(ByteSequence) with default values (of >> maxFrameSize i.e.) set, resulting in exception thrown from here: >> >> public synchronized Object unmarshal(ByteSequence sequence) throws >> IOException { >> bytesIn.restart(sequence); >> // DataInputStream dis = new DataInputStream(new >> // ByteArrayInputStream(sequence)); >> >> if (!sizePrefixDisabled) { <------this is always false when called >> via Queue.doPageInForDispatch() or expireMessages and maybe few other calls >> int size = bytesIn.readInt(); >> if (sequence.getLength() - 4 != size) { >> // throw new IOException("Packet size does not match >> marshaled >> // size"); >> } >> >> if (size > maxFrameSize) { <---- this is always 100MB >> throw new IOException("Frame size of " + (size / (1024 * >> 1024)) + " MB larger than max allowed " + (maxFrameSize / (1024 * 1024)) + " >> MB"); >> } >> } >> >> Object command = doUnmarshal(bytesIn); >> // if( !cacheEnabled && ((DataStructure)command).isMarshallAware() ) >> { >> // ((MarshallAware) command).setCachedMarshalledForm(this, >> sequence); >> // } >> return command; >> } >> >> I understand maxFrameSize was introduced to prevent DOS attacks - but it >> simply does not work as the negotiated values are not recalled when fetching >> the messages from the store. >> Should we create a bug report? or reopen >> https://issues.apache.org/jira/browse/AMQ-498?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel >> ? >> Anybody knows a workaround? >> Cheers, >> Krzysztof >> >> >> >> >> -- >> View this message in context: >> http://activemq.2283324.n4.nabble.com/sizePrefixDisabled-and-or-maxFrameSize-change-in-AcriveMq-5-6-broke-FilePendingMessageCursor-for-bigs-tp4656898.html >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. > > > > -- > http://fusesource.com > http://blog.garytully.com -- http://fusesource.com http://blog.garytully.com
