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

Reply via email to