Seems there is a bug in the new pattern:
    public static final String USERNAME_PATTERN =
"([\\\\da-z]+[-._+&'])*[\\\\da-z]+";

should be:
    public static final String USERNAME_PATTERN =
"([\\da-z]+[-._+&'])*[\\da-z]+";
or:
    public static final String USERNAME_PATTERN =
"([0-9a-z]+[-._+&'])*[0-9a-z]+";

Additionally, are email addresses like [EMAIL PROTECTED] allowed by the RFC?
They are allowed by some mail providers, I actually own one such address.

Ch.


2007/10/24, Ulrich Stärk <[EMAIL PROTECTED]>:
>
> GMT +1
>
> Uli
>
> Christian Dutaret schrieb:
> > Thx for the swift fix. I've patched my code to use the suggested new
> > validator instead of the previous one (I've copied the one that was
> > committed earlier today). I'll let you know if any new problem arise.
> >
> > (seems this was a short night sleep for both of you guys, or is it some
> time
> > zone illusion?)
> >
> > Thx again
> > Ch.
> >
> > 2007/10/24, andyhot <[EMAIL PROTECTED]>:
> >> thx for all - i'll see if i can have the test do performance check,
> >> and commit asap
> >>
> >> Ulrich Stärk wrote:
> >>> I Just created a JIRA report and a fix for that problem.
> >>> https://issues.apache.org/jira/browse/TAPESTRY-1857
> >>>
> >>> Uli
> >>>
> >>> Ulrich Stärk schrieb:
> >>>> I just came to the same conclusion. The problem is with the
> >>>> ([-_\\.]*[A-Za-z0-9]+)* part of the regexp in the user as well as the
> >>>> domain part. Apart from that this regexp will reject email addresses
> >>>> which are valid according to RFC 3696 like [EMAIL PROTECTED]
> >>>>
> >>>> Uli
> >>>>
> >>>> andyhot schrieb:
> >>>>> hmmm - nice report - looks like that specific email regex is
> >>>>> problematic when
> >>>>> the given string is not email and contains lots of chars (>25-30
> >>>>> result in more than 100000 iterations
> >>>>> according to RegexBuddy) - we'll probably have to find a better
> >>>>> regex i guess
> >>>>>
> >>>>> http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html looks quite
> >>>>> interesting though ;)
> >>>>>
> >>>>> Christian Dutaret wrote:
> >>>>>> Hi all,
> >>>>>>
> >>>>>> Occasionally, my T4.1.3 application running on tomcat/jdk5/linux
> >>>>>> gets to
> >>>>>> take 100% CPU and then never release it until I restart the JVM.
> >>>>>> Doesn't
> >>>>>> happen too often, maybe 5 times in a few months. After I restart
> >>>>>> Tomcat,
> >>>>>> everything goes back to normal.
> >>>>>> I eventually decided to try to find out the suspected infinite loop
> >>>>>> that
> >>>>>> causes all this. So I did a thread dump on the JVM, identified the
> >>>>>> cpu-consuming threads. I found 3 threads wasting 33% of the CPU
> >>>>>> each, and
> >>>>>> according to the thread dump, they're all running infinite loops on
> >>>>>> regexp
> >>>>>> matching. Here is an extract of the thread dump for one of these
> >>>>>> threads :
> >>>>>>
> >>>>>>         at java.util.regex.Pattern$GroupTail.match(Pattern.java
> :4634)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4247)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$GroupHead.match(Pattern.java
> :4575)
> >>>>>>         at java.util.regex.Pattern$Loop.match(Pattern.java:4702)
> >>>>>>         at java.util.regex.Pattern$GroupTail.match(Pattern.java
> :4634)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4247)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$GroupHead.match(Pattern.java
> :4575)
> >>>>>>         at java.util.regex.Pattern$Loop.match(Pattern.java:4702)
> >>>>>>         at java.util.regex.Pattern$GroupTail.match(Pattern.java
> :4634)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4247)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$GroupHead.match(Pattern.java
> :4575)
> >>>>>>         at java.util.regex.Pattern$Loop.match(Pattern.java:4702)
> >>>>>>         at java.util.regex.Pattern$GroupTail.match(Pattern.java
> :4634)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$GroupHead.match(Pattern.java
> :4575)
> >>>>>>         at java.util.regex.Pattern$Loop.match(Pattern.java:4702)
> >>>>>>         at java.util.regex.Pattern$GroupTail.match(Pattern.java
> :4634)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4247)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$GroupHead.match(Pattern.java
> :4575)
> >>>>>>         at java.util.regex.Pattern$Loop.matchInit(Pattern.java
> :4721)
> >>>>>>         at java.util.regex.Pattern$Prolog.match(Pattern.java:4658)
> >>>>>>         at java.util.regex.Pattern$Curly.match0(Pattern.java:4240)
> >>>>>>         at java.util.regex.Pattern$Curly.match(Pattern.java:4202)
> >>>>>>         at java.util.regex.Pattern$Begin.match(Pattern.java:3084)
> >>>>>>         at java.util.regex.Matcher.match(Matcher.java:1114)
> >>>>>>         at java.util.regex.Matcher.matches(Matcher.java:495)
> >>>>>>         at
> >>>>>> org.apache.tapestry.util.RegexpMatcher.matches(RegexpMatcher.java
> >>>>>> :71)
> >>>>>>         at
> >>>>>> org.apache.tapestry.form.validator.Email.validate(Email.java:61)
> >>>>>>         at
> >>>>>> org.apache.tapestry.form.ValidatableFieldSupportImpl.validate(
> >>>>>> ValidatableFieldSupportImpl.java:99)
> >>>>>>         at
> >>>>>>
> >>
> $ValidatableFieldSupport_115c315e3ad.validate($ValidatableFieldSupport_115c315e3ad.java)
> >>>>>>         at org.apache.tapestry.form.TextField.rewindFormComponent(
> >>>>>> TextField.java:103)
> >>>>>>
> >>>>>> As you can see, it seems that the email validator regexp matching
> >>>>>> causes an
> >>>>>> infinite loop in some rare cases. Unfortunately, I am not able to
> >>>>>> retrieve
> >>>>>> which values did cause this.
> >>>>>>
> >>>>>> In the mean time, I'll try my own simpler regexp, or maybe I'll
> >>>>>> just skip
> >>>>>> email validation until I get a better idea.
> >>>>>>
> >>>>>> Thanks for any hint on this
> >>>>>>
> >>>>>> Ch.
> >>>>>>
> >>>>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>
> >>>
> >> --
> >> Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
> >> Tapestry / Tacos developer
> >> Open Source / JEE Consulting
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to