[
https://issues.apache.org/jira/browse/OFBIZ-4107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Kreidenweis updated OFBIZ-4107:
--------------------------------------
Attachment: OFBIZ-4107-partial-fix.patch
OFBIZ-4107-test.patch
Test to reproduce the issue and our fix for
org.ofbiz.minilang.method.ifops.IfRegexp
> if-regexp conditions in Minilang and Screens not thread safe
> ------------------------------------------------------------
>
> Key: OFBIZ-4107
> URL: https://issues.apache.org/jira/browse/OFBIZ-4107
> Project: OFBiz
> Issue Type: Bug
> Components: framework
> Affects Versions: SVN trunk
> Reporter: Martin Kreidenweis
> Attachments: OFBIZ-4107-partial-fix.patch, OFBIZ-4107-test.patch
>
>
> The Perl5Matcher Perl5Compiler are not thread safe, as mentioned in their
> documentation:
> http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/Perl5Compiler.html
> A separate instance should be used per thread.
> The concrete issue occurred in our system in the
> createCommContentDataResource service. The service tries to save emails to
> the database after they have been sent. It failed because of the described
> issue. This caused the whole email service (sendMailFromScreen) to be
> rescheduled. So customers got emails twice.
> The Perl5Matcher and Perl5Compiler instances are assigned to static fields in
> the org.ofbiz.minilang.method.ifops.IfRegexp class. So every thread will use
> the same instance. No synchronization is done currently. Changing the fields
> to be non-static will not work either, as SimpleMethods are cached. So all
> calls to the same simple method use the same IfRegexp instance.
> We fixed the problem by moving the instantiation of the Perl5Matcher and
> Perl5Compiler to the exec() method in IfRegexp.
> Other classes are most likely affected, too:
> org.ofbiz.entity.condition.EntityComparisonOperator,
> org.ofbiz.minilang.method.conditional.RegexpCondition,
> org.ofbiz.minilang.operation.Regexp,
> org.ofbiz.widget.menu.ModelMenuCondition$IfRegexp,
> org.ofbiz.widget.screen.ModelScreenCondition$IfRegexp,
> org.ofbiz.widget.tree.ModelTreeCondition$IfRegexp
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.