Hello dear James committers,

In the absence of further feedback I will proceed with sanitizing the
[1] proof of concept, to turn it into a full removal of Camel.

Cheers,

Benoit

On 24/05/2021 11:50, Rene Cordier wrote:
> Hi Benoit,
>
> Thanks for raising this concern it's rather interesting, despite my
> limited knowledge on Camel processing and MailetContainer execution.
>
> I think if we can come up with a robust Java implementation allowing
> to discard yet an other dependency (Camel) from James, that would be a
> win already, as we should keep trying to trim the number of them down.
>
> If also it allows at some point to have reactive mailets it would be
> an other win.
>
> So I would be in offer of your proposition.
>
> Regards,
> Rene.
>
> On 22/05/2021 13:24, btell...@apache.org wrote:
>> Hello folks,
>>
>> I want to raise this concern to the mailing list.
>>
>> As described in
>> https://issues.apache.org/jira/projects/JAMES/issues/JAMES-3589
>>
>> One of my customer reported me that a side effect was done two time upon
>> MailetContainer execution.
>>
>> When writing integration tests counting executions, that they were
>> right!
>>
>> Tracking down the bug, I encountered that `MailImpl.duplicate` do not
>> preserve state, hence processing resumes from ROOT processor (leaving
>> the exchange).
>>
>> I first expected the fix to be easy: also duplicate the state
>> (https://github.com/apache/james-project/pull/445 is an attempt in that
>> direction). What was not my surprise to discover we actively rely on
>> this bug... The MatcherSplit only keeps one mail after executing the
>> current pair... My feeling is that matcher splitting always relied on
>> this hack, and it back-fired. I reproduced the bug on code dating back
>> from 2015.
>>
>> Thus considered that it was time to invest in a as complete as possible
>> test suite enforcing the behavior of the mailet container flow. This can
>> be seen  here https://github.com/apache/james-project/pull/447.
>>
>> As my Camel skills are limited, I currently take the following actions:
>>
>>   - Work on a plain java fix. My attempt at this can be seen here
>> https://github.com/apache/james-project/pull/448 . Passes the test suite
>> I did just write, it passes the whole test suite.
>>   - Contact the Camel PMC to see if someone is willing to help.
>>   - Walk through SVN history if possible to find the original author and
>> go and ask him.
>>   - [what I am doing here] Trigger a discussion on the ML (server-dev)
>> about dropping CAMEL. It could enable (eventually) writing reactive
>> mailets <3.
>>   - Write an ADR about dropping Camel?
>>
>> The alternative approaches can be formulated:
>>
>>   - Simplify the mailet container flow could split mails upfront and
>> execute all recipients separately. This allows to trivially implement
>> per recipient context (bye bye per recipients mailet/matchers) but it
>> lead to duplicated execution of heavy-weight mailets and could have a
>> significant impact for some users workload (eg doing content inspection
>> for each recipient is a waste).
>>     - Pushing the hack of matcher splitter further. Split mail would
>> instead of root be sent to their current processor. via attributes we
>> could then skip pairs until where we were. Would solve the issue
>> applying the exact same logic that today ones (splits starts a new
>> execution). This is the closest to today behavior but I feel bad writing
>> such pieces of code.
>>
>> Note that personally even if this behavior is critical for my clients, I
>> can push their tailor made servers to use alternative mailet-container
>> the time that the Apache James PMC agrees on a fix.
>>
>> Cheers,
>>
>> Benoit
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
> For additional commands, e-mail: server-dev-h...@james.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to