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