[
https://issues.apache.org/jira/browse/JAMES-3828?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benoit Tellier closed JAMES-3828.
-
Resolution: Fixed
> ava.lang.ClassCastException: class [B cannot be cast to class
> org.apache.mailet.AttributeValue ([B is in module java.base of loader
> 'bootstrap'; org.apache.mailet.AttributeValue is in unnamed module of loader
> 'app')
> ---
>
> Key: JAMES-3828
> URL: https://issues.apache.org/jira/browse/JAMES-3828
> Project: James Server
> Issue Type: Bug
> Components: Mailet Contributions
>Affects Versions: master
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.8.0
>
> Time Spent: 40m
> Remaining Estimate: 0h
>
> Got the following error today
> {code:java}
> exception java.lang.ClassCastException: class [B cannot be cast to class
> org.apache.mailet.AttributeValue ([B is in module java.base of loader
> 'bootstrap'; org.apache.mailet.AttributeValue is in unnamed module of loader
> 'app')
> at
> org.apache.mailet.Serializer$MapSerializer.lambda$serialize$0(Serializer.java:507)
> at
> com.google.common.collect.CollectCollectors.lambda$toImmutableMap$6(CollectCollectors.java:185)
>at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(Unknown
> Source)
> at
> java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown
> Source)
> at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
> at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown
> Source)
>at
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown
> Source)
> at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown
> Source)
> at java.base/java.util.stream.ReferencePipeline.collect(Unknown
> Source)
> at
> org.apache.mailet.Serializer$MapSerializer.serialize(Serializer.java:507)
>at
> org.apache.mailet.Serializer$MapSerializer.serialize(Serializer.java:503)
> at
> org.apache.mailet.AttributeValue.toJson(AttributeValue.java:256)
> at
> org.apache.mailet.AttributeValue.duplicate(AttributeValue.java:250)
> at org.apache.mailet.Attribute.duplicate(Attribute.java:62)
>at
> java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
> at
> java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(Unknown Source)
> at
> java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
> at
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
>at
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown
> Source)
> at
> java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
> at
> java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
> at
> org.apache.james.server.core.MailImpl.duplicateAttributes(MailImpl.java:117)
>at
> org.apache.james.server.core.MailImpl.duplicateWithoutMessage(MailImpl.java:111)
> at
> org.apache.james.server.core.MailImpl.duplicate(MailImpl.java:97)
> at
> org.apache.james.mailetcontainer.impl.MatcherSplitter.split(MatcherSplitter.java:149)
> at
> org.apache.james.mailetcontainer.impl.MailetProcessorImpl.lambda$executeProcessingStep$3(MailetProcessorImpl.java:158)
> {code}
> The postmortem is that for XYZ reason, we ingested a Map that do not have the
> good actual types thus we fail serializing the associate attribute. This
> prevent us from duplicating the attributes and causes the mail not to be
> split, thus aborting mail processing.
> We do not know where invalid data was first generated.
> That's weaknesses of the Java parameter type systems.
> We shall:
> - Avoid serializing / deserializing attributes to duplicate them and instead
> do something smarter
> - Reject invalid collections/bad type parameters as early as possible.
> This is potentially due to a custom extension.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org