You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by Phillip Odam <ph...@nitorgroup.com> on 2018/06/20 02:12:19 UTC
Unable to use file queue in v3.0.1
Hi
Haven't spotted the following being discussed. I'm early on in my
investigation but so far I'm having no luck using the file based queue
in v3.0.1.
Here's what I did to replace ActiveMQ with the file queue.
Extracted META-INF/org/apache/james/spring-server.xml from
james-server-app-3.0.1/lib/james-server-spring-3.0.1.jar and placed
META-INF/org/apache/james/spring-server.xml in the conf directory so
path to spring-server.xml, relative to james root is
conf/META-INF/org/apache/james/spring-server.xml
Then changed the line
<import resource="classpath:META-INF/spring/activemq-queue-context.xml"/>
to this
<import resource="classpath:META-INF/spring/file-queue-context.xml"/>
The var/store/queue folders are all created as expected indicating
successful change over to the file queue.
However after starting james and attempting to send a message, the
following exception is thrown... does anyone have the file queue working
in v3.0.1?
org.apache.james.queue.api.MailQueue$MailQueueException: Unable to
enqueue mail;
nested exception is:
java.io.NotSerializableException:
com.google.common.collect.AbstractMapBasedMultimap$WrappedSet
at
org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:217)
at
org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:252)
at
org.apache.james.transport.mailets.RemoteDelivery.serviceSingleServer(RemoteDelivery.java:237)
at
org.apache.james.transport.mailets.RemoteDelivery.serviceNoGateway(RemoteDelivery.java:226)
at
org.apache.james.transport.mailets.RemoteDelivery.service(RemoteDelivery.java:201)
at
org.apache.james.mailetcontainer.impl.camel.CamelProcessor.process(CamelProcessor.java:72)
at
org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:570)
at
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:503)
at
org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:215)
at org.apache.camel.processor.Splitter.process(Splitter.java:98)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
at
org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:375)
at
org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:343)
at
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:233)
at
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:343)
at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
at
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:144)
at
org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.service(CamelMailetProcessor.java:72)
at
org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor.service(AbstractStateCompositeProcessor.java:98)
at
org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.toProcessor(AbstractStateMailetProcessor.java:165)
at
org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.access$1100(CamelMailetProcessor.java:52)
at
org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor$MailetContainerRouteBuilder$StateChangedProcessor.process(CamelMailetProcessor.java:223)
at
org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
at
org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:570)
at
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:503)
at
org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:215)
at org.apache.camel.processor.Splitter.process(Splitter.java:98)
at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
at
org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:375)
at
org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:343)
at
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:233)
at
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:343)
at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
at
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:144)
at
org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.service(CamelMailetProcessor.java:72)
at
org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor.service(AbstractStateCompositeProcessor.java:98)
at
org.apache.james.mailetcontainer.impl.JamesMailSpooler$1.run(JamesMailSpooler.java:178)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.NotSerializableException:
com.google.common.collect.AbstractMapBasedMultimap$WrappedSet
at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at org.apache.james.core.MailImpl.writeObject(MailImpl.java:534)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1128)
at
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at
java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at
org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:182)
... 84 more
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
Re: Unable to use file queue in v3.0.1
Posted by Phillip Odam <ph...@nitorgroup.com>.
Hi Benoit
Thanks for your immediate response, your request made me go back to the
obvious and see what the out of the box mailetcontainer.xml does and of
course it works.
I've now run through comparing my mailetcontainer.xml to the default and
after removing all the custom additions and still seeing the issue I
started incrementally adding all the default mailets that had been
removed. It looks as if commenting out the following mailet in the
transport processor causes the previously mentioned exception.
<mailet match="RemoteAddrNotInNetwork=127.0.0.1"
class="ToProcessor">
<processor>relay-denied</processor>
<notice>550 - Requested action not taken: relaying
denied</notice>
</mailet>
Phillip
On 6/19/18 10:30 PM, Benoit Tellier wrote:
> Hi Phillip.
>
> The issue you report seems to be due to a mail serialization issue.
>
> The file mail queue serializes the mails in order to store them.
>
> We may need, in order to help you, to review your mailetcontainer.xml
> pipeline. Does any of the mailets you used position a multimap as an
> attribute?
>
> We also recently did some work on mail queue implementation (common test
> suite, some fixes, etc...). You might want to try latest changes that
> might enhance the experience with the FileMailQueue.
>
> Finally, there is still some minor issues with the file mail queue,
> awaiting for a kind contributor...
>
> - JAMES-2300 No Order while browsing
> - JAMES-2299 No snapshot isolation upon clear
> - JAMES-2298 Remove by sender, recipient or name clauses is not
> supported yet
>
> Cheers,
>
> Benoit Tellier
>
> Le 20/06/2018 à 09:12, Phillip Odam a écrit :
>> Hi
>>
>> Haven't spotted the following being discussed. I'm early on in my
>> investigation but so far I'm having no luck using the file based queue
>> in v3.0.1.
>>
>> Here's what I did to replace ActiveMQ with the file queue.
>>
>> Extracted META-INF/org/apache/james/spring-server.xml from
>> james-server-app-3.0.1/lib/james-server-spring-3.0.1.jar and placed
>> META-INF/org/apache/james/spring-server.xml in the conf directory so
>> path to spring-server.xml, relative to james root is
>> conf/META-INF/org/apache/james/spring-server.xml
>>
>> Then changed the line
>>
>> <import resource="classpath:META-INF/spring/activemq-queue-context.xml"/>
>>
>> to this
>>
>> <import resource="classpath:META-INF/spring/file-queue-context.xml"/>
>>
>> The var/store/queue folders are all created as expected indicating
>> successful change over to the file queue.
>>
>> However after starting james and attempting to send a message, the
>> following exception is thrown... does anyone have the file queue working
>> in v3.0.1?
>>
>> org.apache.james.queue.api.MailQueue$MailQueueException: Unable to
>> enqueue mail;
>> nested exception is:
>> java.io.NotSerializableException:
>> com.google.common.collect.AbstractMapBasedMultimap$WrappedSet
>> at
>> org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:217)
>> at
>> org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:252)
>> at
>> org.apache.james.transport.mailets.RemoteDelivery.serviceSingleServer(RemoteDelivery.java:237)
>>
>> at
>> org.apache.james.transport.mailets.RemoteDelivery.serviceNoGateway(RemoteDelivery.java:226)
>>
>> at
>> org.apache.james.transport.mailets.RemoteDelivery.service(RemoteDelivery.java:201)
>>
>> at
>> org.apache.james.mailetcontainer.impl.camel.CamelProcessor.process(CamelProcessor.java:72)
>>
>> at
>> org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
>>
>> at
>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>>
>> at
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at
>> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111)
>>
>> at
>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>>
>> at
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>> at
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at
>> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:570)
>>
>> at
>> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:503)
>>
>> at
>> org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:215)
>>
>> at org.apache.camel.processor.Splitter.process(Splitter.java:98)
>> at
>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>>
>> at
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at
>> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at
>> org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
>>
>> at
>> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:375)
>> at
>> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:343)
>> at
>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:233)
>> at
>> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:343)
>> at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
>> at
>> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
>>
>> at
>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
>>
>> at
>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:144)
>>
>> at
>> org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.service(CamelMailetProcessor.java:72)
>>
>> at
>> org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor.service(AbstractStateCompositeProcessor.java:98)
>>
>> at
>> org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.toProcessor(AbstractStateMailetProcessor.java:165)
>>
>> at
>> org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.access$1100(CamelMailetProcessor.java:52)
>>
>> at
>> org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor$MailetContainerRouteBuilder$StateChangedProcessor.process(CamelMailetProcessor.java:223)
>>
>> at
>> org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
>>
>> at
>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>>
>> at
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>> at
>> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111)
>>
>> at
>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>>
>> at
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>> at
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at
>> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:570)
>>
>> at
>> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:503)
>>
>> at
>> org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:215)
>>
>> at org.apache.camel.processor.Splitter.process(Splitter.java:98)
>> at
>> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>>
>> at
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
>> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at
>> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
>>
>> at
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>>
>> at
>> org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
>>
>> at
>> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:375)
>> at
>> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:343)
>> at
>> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:233)
>> at
>> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:343)
>> at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
>> at
>> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
>>
>> at
>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
>>
>> at
>> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:144)
>>
>> at
>> org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.service(CamelMailetProcessor.java:72)
>>
>> at
>> org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor.service(AbstractStateCompositeProcessor.java:98)
>>
>> at
>> org.apache.james.mailetcontainer.impl.JamesMailSpooler$1.run(JamesMailSpooler.java:178)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>
>> at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>
>> at java.lang.Thread.run(Thread.java:748)
>> Caused by: java.io.NotSerializableException:
>> com.google.common.collect.AbstractMapBasedMultimap$WrappedSet
>> at
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
>> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
>> at org.apache.james.core.MailImpl.writeObject(MailImpl.java:534)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>
>> at java.lang.reflect.Method.invoke(Method.java:498)
>> at
>> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1128)
>> at
>> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
>> at
>> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>>
>> at
>> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
>> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
>> at
>> org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:182)
>> ... 84 more
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-dev-help@james.apache.org
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
Re: Unable to use file queue in v3.0.1
Posted by Benoit Tellier <bt...@linagora.com>.
Hi Phillip.
The issue you report seems to be due to a mail serialization issue.
The file mail queue serializes the mails in order to store them.
We may need, in order to help you, to review your mailetcontainer.xml
pipeline. Does any of the mailets you used position a multimap as an
attribute?
We also recently did some work on mail queue implementation (common test
suite, some fixes, etc...). You might want to try latest changes that
might enhance the experience with the FileMailQueue.
Finally, there is still some minor issues with the file mail queue,
awaiting for a kind contributor...
- JAMES-2300 No Order while browsing
- JAMES-2299 No snapshot isolation upon clear
- JAMES-2298 Remove by sender, recipient or name clauses is not
supported yet
Cheers,
Benoit Tellier
Le 20/06/2018 à 09:12, Phillip Odam a écrit :
> Hi
>
> Haven't spotted the following being discussed. I'm early on in my
> investigation but so far I'm having no luck using the file based queue
> in v3.0.1.
>
> Here's what I did to replace ActiveMQ with the file queue.
>
> Extracted META-INF/org/apache/james/spring-server.xml from
> james-server-app-3.0.1/lib/james-server-spring-3.0.1.jar and placed
> META-INF/org/apache/james/spring-server.xml in the conf directory so
> path to spring-server.xml, relative to james root is
> conf/META-INF/org/apache/james/spring-server.xml
>
> Then changed the line
>
> <import resource="classpath:META-INF/spring/activemq-queue-context.xml"/>
>
> to this
>
> <import resource="classpath:META-INF/spring/file-queue-context.xml"/>
>
> The var/store/queue folders are all created as expected indicating
> successful change over to the file queue.
>
> However after starting james and attempting to send a message, the
> following exception is thrown... does anyone have the file queue working
> in v3.0.1?
>
> org.apache.james.queue.api.MailQueue$MailQueueException: Unable to
> enqueue mail;
> nested exception is:
> java.io.NotSerializableException:
> com.google.common.collect.AbstractMapBasedMultimap$WrappedSet
> at
> org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:217)
> at
> org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:252)
> at
> org.apache.james.transport.mailets.RemoteDelivery.serviceSingleServer(RemoteDelivery.java:237)
>
> at
> org.apache.james.transport.mailets.RemoteDelivery.serviceNoGateway(RemoteDelivery.java:226)
>
> at
> org.apache.james.transport.mailets.RemoteDelivery.service(RemoteDelivery.java:201)
>
> at
> org.apache.james.mailetcontainer.impl.camel.CamelProcessor.process(CamelProcessor.java:72)
>
> at
> org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
>
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111)
>
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at
> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:570)
>
> at
> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:503)
>
> at
> org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:215)
>
> at org.apache.camel.processor.Splitter.process(Splitter.java:98)
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at
> org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
>
> at
> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:375)
> at
> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:343)
> at
> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:233)
> at
> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:343)
> at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
> at
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
>
> at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
>
> at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:144)
>
> at
> org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.service(CamelMailetProcessor.java:72)
>
> at
> org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor.service(AbstractStateCompositeProcessor.java:98)
>
> at
> org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.toProcessor(AbstractStateMailetProcessor.java:165)
>
> at
> org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.access$1100(CamelMailetProcessor.java:52)
>
> at
> org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor$MailetContainerRouteBuilder$StateChangedProcessor.process(CamelMailetProcessor.java:223)
>
> at
> org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
>
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
> at
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111)
>
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at
> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:570)
>
> at
> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:503)
>
> at
> org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:215)
>
> at org.apache.camel.processor.Splitter.process(Splitter.java:98)
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:416)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
> at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
>
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>
> at
> org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
>
> at
> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:375)
> at
> org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:343)
> at
> org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:233)
> at
> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:343)
> at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
> at
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
>
> at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
>
> at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:144)
>
> at
> org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.service(CamelMailetProcessor.java:72)
>
> at
> org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor.service(AbstractStateCompositeProcessor.java:98)
>
> at
> org.apache.james.mailetcontainer.impl.JamesMailSpooler$1.run(JamesMailSpooler.java:178)
>
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>
> at java.lang.Thread.run(Thread.java:748)
> Caused by: java.io.NotSerializableException:
> com.google.common.collect.AbstractMapBasedMultimap$WrappedSet
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
> at org.apache.james.core.MailImpl.writeObject(MailImpl.java:534)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1128)
> at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
>
> at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
> at
> org.apache.james.queue.file.FileMailQueue.enQueue(FileMailQueue.java:182)
> ... 84 more
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org