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] > >